47/120
28681 ワード
apt
ubuntuでcentosのyumの代わりにパッケージマネージャを使用する
yumとの違い
aptコマンドオプション
ネットワーク管理
Netplanツール
/etc/netplan/\*.yaml
vagrant@node3:~$ ls /etc/netplan
50-cloud-init.yaml 50-vagrant.yaml
変更を適用netplan apply
その他
保安
翻訳可能な複文
タスクの下でloop
、with_
、until
、loop
繰り返し文を構成
2.5からwith_<lookup>
まで.以前使用ansible.builtin.user
loop
->2.8モジュールタグの二元化を開始
リスト#リスト#
with_items
ではなくwith_list
、loop
- hosts: 192.168.100.11
gather_facts: no
tasks:
- debug:
msg: "{{ item }}"
with_items:
- apple
- banana
- carrot
- hosts: 192.168.100.11
gather_facts: no
vars:
fruits:
- apple
- banana
- carrot
tasks:
- debug:
msg: "{{ item }}"
with_items:
"{{ fruits }}"
- hosts: 192.168.100.11
gather_facts: no
vars:
fruits:
- apple
- banana
- carrot
tasks:
- debug:
msg: "{{ item }}"
loop:
"{{ fruits }}"
list of hashes(dictionary)
with_dict
ではなくwhen
- name: Add several users
user:
name: "{{ item.name }}"
state: present
groups: "{{ item.groups }}"
loop:
- name: 'testuser1'
groups: 'wheel'
- name: 'testuser2'
groups: 'root'
#[ {name: 'testuser1', groups: 'wheel'}, {name: 'testuser2', group: 'root'} ]
- hosts: 192.168.100.11
gather_facts: no
vars:
fruits:
- name: apple
count: 2
- name: banana
count: 3
tasks:
- debug:
msg: "{{ item.name }} / {{ item.count }}"
loop:
'{{ fruits }}'
neted lists
- name: Give users access to multiple databases
community.mysql.mysql_user:
name: "{{ item[0] }}"
priv: "{{ item[1] }}.*:ALL"
append_privs: yes
password: "foo"
loop: "{{ ['alice', 'bob'] | product(['clientdb', 'employeedb', 'providerdb']) | list }}"
random_choice
- name: with_random_choice
ansible.builtin.debug:
msg: "{{ item }}"
with_random_choice: "{{ my_list }}"
- name: with_random_choice -> loop (No loop is needed here)
ansible.builtin.debug:
msg: "{{ my_list|random }}"
tags: random
翻訳可能条件文
条件文の使い方
playbook test
filters
タスク使用test
キーワード、定義条件filter
、{{ }}
条件を定義するときにtasks
カッコXを使用- hosts: 192.168.100.11
vars:
switch: "on"
tasks:
- debug:
msg: "hello switch on"
when: switch == "on"
- debug:
msg: "hello switch off"
when: switch == "off"
条件文でよく使用されるパラメータ
- hosts: 192.168.100.11
gather_facts: no
tasks:
- debug:
msg: "{{ item }}"
with_items:
- apple
- banana
- carrot
- hosts: 192.168.100.11
gather_facts: no
vars:
fruits:
- apple
- banana
- carrot
tasks:
- debug:
msg: "{{ item }}"
with_items:
"{{ fruits }}"
- hosts: 192.168.100.11
gather_facts: no
vars:
fruits:
- apple
- banana
- carrot
tasks:
- debug:
msg: "{{ item }}"
loop:
"{{ fruits }}"
- name: Add several users
user:
name: "{{ item.name }}"
state: present
groups: "{{ item.groups }}"
loop:
- name: 'testuser1'
groups: 'wheel'
- name: 'testuser2'
groups: 'root'
#[ {name: 'testuser1', groups: 'wheel'}, {name: 'testuser2', group: 'root'} ]
- hosts: 192.168.100.11
gather_facts: no
vars:
fruits:
- name: apple
count: 2
- name: banana
count: 3
tasks:
- debug:
msg: "{{ item.name }} / {{ item.count }}"
loop:
'{{ fruits }}'
- name: Give users access to multiple databases
community.mysql.mysql_user:
name: "{{ item[0] }}"
priv: "{{ item[1] }}.*:ALL"
append_privs: yes
password: "foo"
loop: "{{ ['alice', 'bob'] | product(['clientdb', 'employeedb', 'providerdb']) | list }}"
- name: with_random_choice
ansible.builtin.debug:
msg: "{{ item }}"
with_random_choice: "{{ my_list }}"
- name: with_random_choice -> loop (No loop is needed here)
ansible.builtin.debug:
msg: "{{ my_list|random }}"
tags: random
条件文の使い方
playbook test
filters
タスク使用
test
キーワード、定義条件filter
、{{ }}
条件を定義するときにtasks
カッコXを使用- hosts: 192.168.100.11
vars:
switch: "on"
tasks:
- debug:
msg: "hello switch on"
when: switch == "on"
- debug:
msg: "hello switch off"
when: switch == "off"
条件文でよく使用されるパラメータ- hosts: wp
tasks:
- debug:
msg: "hello CentOS"
when: ansible_facts["distribution"] == "CentOS"
- debug:
msg: "hello Ubuntu"
when: ansible_facts["distribution"] == "Ubuntu"
かへんかんハンドル
襟
できるだけべき乗等性を満たす
すべてのモジュール、モジュールのパラメータがべき乗等性を満たしていない
問題のあるコード
- hosts: 192.168.100.11
become: yes
vars:
web_svc_port: "80"
tasks:
- yum:
name: httpd
state: installed
- lineinfile:
path: /etc/httpd/conf/httpd.conf
regexp: '^Listen'
line: 'Listen {{ web_svc_port }}'
- service:
name: httpd
state: restarted
enabled: yes
24/7サービスの場合、設定を変更するたびに再起動すると、問題が発生します.
トラブルシューティングコード
- hosts: 192.168.100.11
become: yes
vars:
web_svc_port: "80"
tasks:
- yum:
name: httpd
state: installed
- lineinfile:
path: /etc/httpd/conf/httpd.conf
regexp: '^Listen'
line: 'Listen {{ web_svc_port }}'
register: result
- service:
name: httpd
state: started
enabled: yes
- service:
name: httpd
state: restarted
enabled: yes
when: result is changed
ゲーム、ジョブ名
- name: Name Test Playbook
hosts: 192.168.100.11
tasks:
- name: task1
debug:
msg: hello world
- name: task2
debug:
msg: hello world
- name: task3
debug:
msg: hello world
- debug:
msg: hello world
name: task4
マニピュレータ
理由.特定の操作が変更された場合にのみ実行される操作を指定します.
ハンドラ内のアクションには名前が必要です
Handler運転の順番は?
- hosts: 192.168.100.11
become: yes
vars:
web_svc_port: "80"
tasks:
- yum:
name: httpd
state: installed
- lineinfile:
path: /etc/httpd/conf/httpd.conf
regexp: '^Listen'
line: 'Listen {{ web_svc_port }}'
- service:
name: httpd
state: restarted
enabled: yes
- hosts: 192.168.100.11
become: yes
vars:
web_svc_port: "80"
tasks:
- yum:
name: httpd
state: installed
- lineinfile:
path: /etc/httpd/conf/httpd.conf
regexp: '^Listen'
line: 'Listen {{ web_svc_port }}'
register: result
- service:
name: httpd
state: started
enabled: yes
- service:
name: httpd
state: restarted
enabled: yes
when: result is changed
- name: Name Test Playbook
hosts: 192.168.100.11
tasks:
- name: task1
debug:
msg: hello world
- name: task2
debug:
msg: hello world
- name: task3
debug:
msg: hello world
- debug:
msg: hello world
name: task4
block
)が完了すると、プロセッサは- name: handler example
hosts: 192.168.100.11
tasks:
- name: task1
file:
path: /tmp/test1
state: touch
notify:
- handle2
- handle1
#- name: error
# command: ls -P
- name: task2
file:
path: /tmp/test2
state: touch
notify:
- handle1
handlers:
- name: handle1
debug:
msg: "handle1"
- name: handle2
debug:
msg: "handle2"
- name: Handler Example
hosts: 192.168.100.11
become: yes
vars:
web_svc_port: "80"
tasks:
- name: Install httpd Package
yum:
name: httpd
state: installed
- name: Reconfigure httpd service port
lineinfile:
path: /etc/httpd/conf/httpd.conf
regexp: '^Listen'
line: 'Listen {{ web_svc_port }}'
notify:
- Restart httpd Service
- name: Start httpd Service
service:
name: httpd
state: started
enabled: yes
handlers:
- name: Restart httpd Service
service:
name: httpd
state: restarted
enabled: yes
ハンドラが実行されず、その後の操作が失敗した場合->ハンドラが実行されていません- name: Flush handlers
meta: flush_handlers
ansible-playbook test.yaml --force-handlers
マークに失敗して試合を終了した場合でも、プログラムの実行を強制する設定.トランスファブロック
ブロック=複数のタスクを含むグループ
ブロックの機能
1.複数のタスクに共通キーワードを付与可能(ex:条件文)
2.rescue
、always
、block
ブロックはエラー処理に使用できるrescue
常にブロックを実行block
ブロックにエラーが発生した場合のみ実行always
常時運転- hosts: 192.168.100.11
tasks:
- block:
- debug:
msg: hello world
- command: /usr/bin/false
- debug:
msg: hello world2
ignore_errors: yes
rescue:
- debug:
msg: It's rescue
always:
- debug:
msg: It's Always
許容ラベル
タスクをマークでき、特定のタグのタスクしか実行できません.- hosts: 192.168.100.11
gather_facts: no
tasks:
- debug:
msg: "web server stage"
tags:
- stage
- debug:
msg: "web server product"
tags:
- prod
- debug:
msg: "web server all"
allラベル:すべてのタスクが
untaggedタグ:タグが設定されていないタスクに属するansible-playbook test.yaml --tags=stage,prod
チェックマークansible-playbook test.yaml --list-tasks
ansible-playbook test.yaml --list-tags
タスクせいぎょ
step
ansible-playbook test.yaml --step
特定のタスクから開始
ansible-playbook test.yaml --start-at-task="task3"
ansible-playbook test.yaml --start-at-task="task3" --limit 192.168.100.12
Reference
この問題について(47/120), 我々は、より多くの情報をここで見つけました
https://velog.io/@numerok/47120
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
- hosts: 192.168.100.11
tasks:
- block:
- debug:
msg: hello world
- command: /usr/bin/false
- debug:
msg: hello world2
ignore_errors: yes
rescue:
- debug:
msg: It's rescue
always:
- debug:
msg: It's Always
タスクをマークでき、特定のタグのタスクしか実行できません.
- hosts: 192.168.100.11
gather_facts: no
tasks:
- debug:
msg: "web server stage"
tags:
- stage
- debug:
msg: "web server product"
tags:
- prod
- debug:
msg: "web server all"
allラベル:すべてのタスクがuntaggedタグ:タグが設定されていないタスクに属する
ansible-playbook test.yaml --tags=stage,prod
チェックマークansible-playbook test.yaml --list-tasks
ansible-playbook test.yaml --list-tags
タスクせいぎょ
step
ansible-playbook test.yaml --step
特定のタスクから開始
ansible-playbook test.yaml --start-at-task="task3"
ansible-playbook test.yaml --start-at-task="task3" --limit 192.168.100.12
Reference
この問題について(47/120), 我々は、より多くの情報をここで見つけました https://velog.io/@numerok/47120テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol