ansibleでUbuntu 14.04へDockerをインストールする

ansibleでUbuntu 14.04へDockerをインストールしてみようとPlaybookに

- name: download docker install script
  get_url: url=https://get.docker.com/ dest=~/docker.sh mode=0755

と書いて実行したらエラーが

Failed to validate the SSL certificate for get.docker.com:443. Use validate_certs=False or make sure your managed systems have a valid CA certificate installed.

とかなんとか

Getting SSL issue again · Issue #12161 · ansible/ansible
で議論されてるっぽいです

ホスト側のpython 2.7.9以上を入れないとSNIに対応してないからget_urlがこける様子
ansibleの作法からちょっと外れますが、shellでそのままいくと

- name: instal docker
  shell: "curl -fsSL https://get.docker.com/ | sh"

無事インストールされました
python上げてもいいはずです

ansible-playbookをlocalhostあてに適用する

ansible-playbookを使っていて、一部をlocalhostに当てたかったので調べてみました

Delegation, Rolling Updates, and Local Actions — Ansible Documentation

にバッチシ書いてある

$ ansible-playbook playbook.yml –connection=local

でいいらしい

インベントリファイルを作って

$ vim localhost

[dev]
localhost

playbookにhosts: localhostの記載を足して(もしくはhosts: all)

$ ansible-playbook -i localhost site.yml -t test –connection=local -K -vvv

で当ててみました
-t で指定したtagだけ、-Kでsudo時のパスワードを入力、-vvvは詳細に表示が出ます

いやー、便利

ansible galaxyを使ってrbenvをインストールしてみる

ansibleでインフラのコード化を進めてますが、rubyのインストール時に使っていたrbenvがうまくいかなかったので
Galaxy – zzet.rbenv
を使ってみました

ansibleはインストール済み、サーバーもsshでつながる状態からはじめました

指示があるように(sudoはつけました)
$ sudo ansible-galaxy install zzet.rbenv

でデフォルトのディレクトリだと
/etc/ansible/roles/zzet.rbenv
へインストールされます

ディレクトリを変更するなら
/etc/ansible/ansible.cfg
に指定すればよさそうです

playbookに

- hosts: sample
  become: yes
  become_method: sudo
  gather_facts: true # https://github.com/zzet/ansible-rbenv-role/issues/37
  vars:
    rbenv:
      env: system
      version: v1.0.0
      ruby_version: 2.3.0
  roles:
    - role: zzet.rbenv
      rbenv_users:
        - user

を追記

sudoをつけたり、バージョン指定したりします
あとは実行すれば

$ ansible-playbook -i hosts site.yml -vvv

rbenvでruby v2.3.0が入った環境ができました

はまったところはこちら
Vagrantへansibleでrbenv installするとコケる