-
ansible剧本扩展功能(续day38)
-
ansible剧本整合功能
-
ansible剧本角色配置
1.ansible剧本扩展功能
d.剧本编写循环功能
编写方式一:列表方式设置循环
- hosts: 172.16.1.41
tasks:
- name: install software
yum: name={{ item }} state=installed
with_items:
- rsync
- nfs-utils
- telnet-server
编写方式二:字典方式设置循环
- hosts: 172.16.1.41
tasks:
- name: create user
user: name={{ item.old01 }} uid={{ item.old02 }} shell={{ item.old03 }}
with_items:
- {old01: 'oldboy01', old02: '5001', old03: '/sbin/nologin'}
- {old01: 'oldboy02', old02: '5002', old03: '/sbin/nologin'}
ps:with_items也可以换成loop 调用时依然使用item调用
e.剧本忽略错误功能(剧本中shell模块使用时错误问题)
[root@m01 ansible_playbook]# cat test_忽略错误配置.yml
- hosts: 172.16.1.41
tasks:
- name: install software
shell: yum install -y htop
- name: create user
shell: useradd oldboy
ignore_errors: yes 开启忽略错误功能
- name: boot server
shell: systemctl start rsyncd
有时使用shell万能模块会出现的问题:
01.实现批量管理操作会更加麻烦
02.实现剧本任务功能,不具有幂等性
f.剧本编写标签功能(调试剧本)
- name: create user
user: name=rsync shell=/sbin/nologin create_home=no
tags: oldboy01
ansible-playbook test_标签功能配置.yml -t oldboy01 --- 只执行标记任务
ansible-playbook test_标签功能配置.yml --skip-tags oldboy01 --- 跳过标记任务
g.剧本提高执行效率
取消剧本收集主机信息功能
- hosts: 172.16.1.41
gather_facts: no ---提升剧本执行效率
tasks:
ps:取消主机收集信息功能,判断功能则也无法使用
剧本执行慢的可能原因:
01.SSH远程连接优化没有配置(关闭认证功能,关闭DNS反向解析功能)
02.使用yum模块下载软件(使用本地yum仓库)
03.剧本执行收集信息慢
04.剧本执行过程必须保证完整
例如yum任务在执行时,ctrl+c中断剧本任务很可能导致yum进程还在
h.剧本触发器功能配置
[root@m01 ansible_playbook]# cat test_触发功能配置.yml
- hosts: 172.16.1.41
tasks:
- name: push config file
copy: src=/tmp/rsyncd.conf dest=/etc/
notify: rsync_restart
- name: boot server
service: name=rsyncd state=started
handlers:
- name: rsync_restart
service: name=rsyncd state=restarted
PS: 触发器任务会在所有任务执行完毕之后才执行
剧本编写扩展功能: https://docs.ansible.com/ansible/latest/user_guide/playbooks.html
2.ansible剧本整合功能
方式一:include_tasks:f1.yml
- hosts: all
remote_user: root
tasks:
- include_tasks: f1.yml
- include_tasks: f2.yml
方式二:include: f1.yml
- include:f1.yml
- include:f2.yml
方式三:- import_playbook: 推荐
[root@m01 ansible-playbook]# cat main.yml
- import_playbook: base.yml
- import_playbook: rsync.yml
- import_playbook: nfs.yml