参考サイト
[実践!Ansibleベストプラクティス(前編)][sakura1]
[sakura1]: https://knowledge.sakura.ad.jp/3084/
[実践!Ansibleベストプラクティス(後編)][sakura2]
[sakura2]: https://knowledge.sakura.ad.jp/3086/
[Ansible の Role を Ansible Galaxy に登録し再利用][qiita1]
[qiita1]: https://qiita.com/kouji-kojima/items/2525ea87952d4039bad7
Ansible 利用時の懸念と対応(未完)
- ssh 接続ができる必要がある.
- ssh 接続時のパスワードについて :: 入力不要にする or 入力する or 補助ツールを利用する
- 接続先で管理者権限でコマンド等を実行できる必要がある :: sudo 等を利用する
- 接続先で sudo を利用する場合 :: 入力不要にする or 入力する or 補助ツールを利用する
with_items を使うときの注意
参照する item はループの中になる。
- 間違い
- debug:
msg: "{{ item }}"
with_items: "{{ message_list }}"
- 正しい
- debug:
msg: "{{ item }}"
with_items: "{{ message_list }}"
playbook を個別ホストで実行する。
-l オプションを使う
% ansible-playbook -i ~/ansible_hosts -l taget_host test.yml
playbook の確認
--list-hosts, --list-tasks, --check オプション
% ansible-playbook -i ~/ansible_hosts --list-hosts --list-tasks --check test.yml
定義されている変数を確認する
ansible -i hosts -m debug -a "var=hostvars" all
ansible -i hosts -m debug -a "var=hostvars['localhost']" all
デバッグメッセージを -v オプションで on/off する
- debug:
msg: "This only displays with ansible-playbook -vv+"
verbosity: 2
初回接続時の ssh host キー確認を無視する。
$HOME/.ansible.cfg に下記設定を追加する。
[defaults]
host_key_checking = False
ディストリビューション、バージョン毎の設定
Best Practice から
host: all
tasks:
- name: group by distribution and version
group_by: key="{{ ansible_distribution }}_{{ ansible_distribution_version }}"
host: Ubuntu_14*
......
個人的にはこっちの方がわかりやすいけど、どうだろう。
when: ansible_distribution == 'Ubuntu' and ansible_distribution_release == 'precise'
Deployment Management でやりたいこと。
- 同じことを繰り返したくない。
- 何度行っても同じ構成になるようにしたい。(設定ミスの排除含む)
必要な機能
- すべてのホストで共通の設定(すべてってなんだ)
- OS別の共通設定(Windows, Linux のバージョン、ディストリビューション毎の共通設定)
- 役割毎の設定(Web、DBなどなど)
- 地域別の設定(タイムゾーン、NTPサーバ、リポジトリサーバなど距離が関係するもの)
- その他、自分で考えたグループ(思いつかない、DMZ に配置した Web サーバとか役割と地域で識別できる?)
- ホスト毎の個別設定(ホスト名、IPアドレス、IP は DHCP か?)
- 安定していて、学習コストが低い(本質ではない。大事なのは設定の中身)
その他
構成管理ツール Configuration Management tool というより、Deployment Management tool の方が自分にはしっくりくる。