Ansibleについて調べたことの雑多なまとめ
変数
iniファイル形式でもYAML形式でも記述できるらしい。これはインベントリファイルのことか...?
# ini形式
[atlanta]
host1
host2
[atlanta:vars]
ntp_server=ntp.atlanta.example.com
proxy=proxy.atlanta.example.com
# YAML形式
atlanta:
hosts:
host1:
host2:
vars:
ntp_server: ntp.atlanta.example.com
proxy: proxy.atlanta.example.com
ホスト変数とグループ変数
インベントリに変数を定義するだけでなく、ホスト変数やグループ変数を定義することができる。
その場合はYAML形式を使用する必要がある模様。
/etc/ansible/
ディレクトリ配下、カレントディレクトリ配下のgroup_vars
、host_vars
ディレクトリにグループ名/ホスト名のファイルを作成し設定を記述する。
/etc/ansible/group_vars/raleigh # ファイルの拡張子は '.yml'、 '.yaml'、 もしくは '.json'
/etc/ansible/group_vars/webservers
/etc/ansible/host_vars/foosball
roleに紐づく変数の定義ファイルなどはちょっと違ったりしそう。main.yml
だったり。
下記も目を通しておきたい。
公式ドキュメント - Best Practices
繰り返し処理
loop
かwith_*
を使って繰り返し処理を実行することができる。
loop
はAnsibleのバージョン2.5で追加された機能だそうです。
一部のモジュールではパラメータに直接リストを渡すことができるので、タスクをループさせるより効率が良いことがある。モジュールのマニュアルを読むこと。
単純なリストの繰り返し処理
- name: add several users
user:
name: "{{ item }}"
state: present
groups: "wheel"
loop: # with_items:
- testuser1
- testuser2
ハッシュリストの繰り返し処理
- name: add several users
user:
name: "{{ item.name }}"
state: present
groups: "{{ item.groups }}"
loop: # with_items:
- { name: 'testuser1', groups: 'wheel' }
- { name: 'testuser2', groups: 'root' }
変数を参照する場合
事前に定義した変数を使用して繰り返し処理を行う場合、loop
に変数を指定する。
変数は"{{ }}"
で括らないと変数が参照できない。
注意したほうがいいのは変数名で、暗黙的に宣言されている変数があるので、それとかち合ってる場合はうまく動かなくてハマる。。。groups
とか。
公式ドキュメントの特殊変数を確認しよう。。。
vars:
users:
- { name: 'testuser1', groups: 'wheel' }
- { name: 'testuser2', groups: 'root' }
- name: add several users
user:
name: "{{ item.name }}"
state: present
groups: "{{ item.groups }}"
loop: "{{ users }}"
タスクを管理者ユーザで実行する
rootでSSH接続できない場合、管理者権限でタスクを実行するにはbecome
を使います。
公式ドキュメント - Understanding privilege escalation: become
Playbookに記載する場合は下記のような形で記載する。
---
- hosts: all
become: yes
become_user: root
become_method: su
become_flags: '-s /bin/sh'
または変数を設定する。
変数は適用範囲に応じて適切なファイルに指定しておけばいいと思う。
---
# group_vars/all.yml
ansible_become: yes
ansible_become_method: su
ansible_become_password: somepassword
become_password
はパスワードハッシュは指定できないみたい。
機微なデータを保護したい場合はAnsible Vaultを使う感じ。
実行
DRY-RUN
--check
オプションつけて実行する。
--diff
オプションもあるが何が違うのか...
構文チェック
--syntax-check
オプションつけて実行する。
タスク一覧の確認
--list-tasks
オプションつけて実行する。
特定のタスクから実行する
ansible-playbook
コマンドを--start-at-task
オプション付きで実行する。
ステップ実行するには--step
オプションをつける。
ansible-playbook -i hosts -l hostname site.yml --start-at-task="some task name" --step
Author And Source
この問題について(Ansibleについて調べたことの雑多なまとめ), 我々は、より多くの情報をここで見つけました https://qiita.com/mako24/items/2bbc6852a40946665641著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .