ansible
エージェントレスの構成管理ツール。
対象ホストでは、エージェント等をインストールする必要がなく、基本的に下記を満たせばよい。
- Pythonが動くこと
- 相手がリモートホストならsshでログインできること
(ただし、使うモジュールによっては追加パッケージが必要。例:aptモジュールを使うためにはpython-aptが必要)
「あるべき姿」をYAMLで記載する。(記載したファイル(群)をplaybookと呼ぶ)
ansible
-i hosts インベントリファイルを指定
-m ping 疎通確認
-m setup ファクト収集
-a 'command -h' 指定したコマンドを実行
--ask-pass ログインで必要となるパスワードを要求
targethost 対象ホストを指定
リポジトリファイル(hosts)の内容の例
[myserver]
192.168.1.1 ansible_ssh_user=myusername
[desktop]
myhostname ansible_connection=local
疎通確認の例
$ ansible -i hosts -m ping 192.168.1.1 --ask-pass
$ ansible -i hosts -m ping myhostname
$ ansible -i hosts -m ping 192.168.1.1 --ask-pass --ssh-common-args '-o PubkeyAuthentication=no'
ansible-playbook
-i hosts
--syntax-check プレイブックの文法チェックのみ
--list-tasks プレイブックのタスクをリスト表示
--check ドライラン
--ask-sudo-pass sudoで必要となるパスワードを要求
--ask-su-pass suで必要となるパスワードを要求
--ask-pass ログインで必要となるパスワードを要求
--diff show differences
--tags "tag1,tag2,..."
--skip-tags "tag1,tag2,..."
playbook.yml プレイブックを指定
プレイリストの内容確認、実行前確認、設定反映の例
$ ansible-playbook -i hosts --syntax-check myserver.yml
$ ansible-playbook -i hosts --list-tasks myserver.yml
$ ansible-playbook -i hosts --check myserver.yml --ask-pass
$ ansible-playbook -i hosts myserver.yml --ask-pass
Sample ansible playbook in a single yaml file