day39综合架构批量管理篇

  • 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 

你可能感兴趣的:(day39综合架构批量管理篇)