Ansibleを使ってみる
Ansilbeとは
Anibleインストール
# yum install ansible # ansible --version ansible 1.9.4 configured module search path = None
ディレクトリ構成のベストプラクティス
ベストプラクティスを一括生成するスクリプト
ansibleのベストプラクティスの構成を一括生成するスクリプト
Playbookを使う
使い方の例
# ansible-playbook (playbook_name).yml -i (inventory_name) -vvv -k -C
- playbook_name --> 実行するPlaybookの名前:カレントディレクトリにあるPlaybookを読み込む
- inventory_name --> Playbookを実行するインベントリを指定する
- -vvv --> 実行ログを出力する :vが多いほど詳細なログを出力する
- -k --> パスワード認証
- -C --> 実行はせずにチェックのみ
python-simplejsonパッケージがない場合の対処
- CentOS5系などでパッケージがないためにエラーになるケースがある
failed: [172.16.0.1] => {"failed": true} msg: Error: ansible requires the stdlib json or simplejson module, neither was found!
yumで入れる
# yum install python-simplejson
Ansibleで複数ホストにインストールする
- 複数台あった場合に一気にインストールしたい場合、rawモジュールを使う
- コマンドを実行するモジュールが複数あるが、このパッケージがないとそもそも実行できないので、
- リモートホストを取得するgather_factsなどをせずにコマンドを実行させる
# ansible -i hosts [サーバのIPアドレス] -k -m raw -a "yum -y install python-simplejson"
Ansibleでリモート先にsimplejsonをインストールするときのメモ
python-simplejson.yml
- hosts: hogehoge gather_facts: no roles: - python-simplejson
roles/python-simplejson/tasks/main.yml
- name: Install pyrhon-simplejson raw: "yum install -y python-simplejson"
Tips
Ansibleでホストを再起動を制御する
- selinuxの設定変更後のrebootを想定
- name: test connection (before reboot) ping: - name: reboot after change selinux shell: sleep 2s && /sbin/reboot & - name: wait for SSH port down local_action: wait_for host={{ inventory_hostname }} port=22 state=stopped - name: wait for SSH port up wait_for: host={{ inventory_hostname }} port=22 state=started delay=30 delegate_to: 192.168.1.1 - name: test connection (after reboot) ping: