Skip to main content

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