ansible剧本编写扩展功能

ansible剧本编写扩展功能
1. 剧本变量编写功能
2. 剧本信息通知功能
3. 剧本信息判断功能
4. 剧本信息循环功能
5. 剧本编写忽略错误
6. 剧本标签设置功能
7. 剧本忽略采集功能
8. 剧本信息触发功能

  1. 剧本变量编写功能
    设置变量方法一: 在剧本中设置变量 剧本变量其次优先
- hosts: 172.16.1.41
  vars:
	dir: /etc
	file: rsyncd.conf
	tasks:
	  - name: copy file 
		copy: src={{ dir }}/{{ file }} dest={{ dir }}/
	
	设置变量方法二: 在主机清单中设置变量  主机清单变量最不优先
	[rsync_server]
    172.16.1.41 ansible_user=root ansible_password=123456
    172.16.1.31
    [rsync_server:vars]   --- 给指定主机组统一设置变量
    dir=/etc
    file=rsyncd.conf
	
	设置变量方法三: 在剧本执行命令参数中设置变量      命令行最优先
	ansible-playbook -e dir=/etc -e file=rsyncd.conf test_变量功能.yaml
  1. 剧本信息通知功能
- hosts: 172.16.1.41
  tasks:
    - name: boot server
      service: name=rsyncd state=started
    - name: check server boot
      shell: netstat -lntup|grep 873
      register: oldboy
    - debug: msg={{ oldboy.stdout_lines }}
  1. 剧本判断功能说明
   三台主机:
    NFS服务客户端(nfs服务启动)          NFS服务端
   centos7  10.0.0.7                centos7 10.0.0.31
   centos6  10.0.0.8 
   centos7  10.0.0.9
- hosts: nfs_client
  tasks:
	  - name: boot centos7 nfs
	    shell: systemctl start nfs 
		 判断: 如果是centos7 ???
    - name: boot centos6 nfs 
        shell: /etc/init.d/nfs start	
            判断: 如果是centos6 ???			 
   
- hosts: nfs_client
  tasks:
    - name: create file for 41 host
      file: path=/tmp/172.16.1.41 state=directory
      when: (ansible_hostname == "backup")
    - name: create file for 7 host
      file: path=/tmp/172.16.1.7  state=directory
      when: (ansible_hostname == "web01") 
- hosts: 172.16.1.41
  tasks:
    - name: create file for 41 host
      file: path=/tmp/centos state=directory
      when: (ansible_distribution == "CentOS")
 
   如何对管理主机进行判断:
   setup --- 收集远程主机信息
   
   ansible_all_ipv4_addresses:				    仅显示ipv4的信息。
      ansible_devices:							仅显示磁盘设备信息。
      ansible_distribution:						显示是什么系统,例:centos,suse等。
      ansible_distribution_major_version:		    显示是系统主版本。
      ansible_distribution_version:				仅显示系统版本。
      ansible_machine:							显示系统类型,例:32位,还是64位。
      ansible_eth0:								仅显示eth0的信息。
      ansible_hostname:							仅显示主机名。
      ansible_kernel:							    仅显示内核版本。
      ansible_lvm:								显示lvm相关信息。
      ansible_memtotal_mb:						显示系统总内存。
      ansible_memfree_mb:						    显示可用系统内存。
      ansible_memory_mb:							详细显示内存情况。
      ansible_swaptotal_mb:						显示总的swap内存。
      ansible_swapfree_mb:						显示swap内存的可用内存。
      ansible_mounts:							    显示系统磁盘挂载情况。
      ansible_processor:							显示cpu个数(具体显示每个cpu的型号)。
      ansible_processor_vcpus:					显示cpu个数(只显示总的个数)。
  1. 剧本信息循环功能
      循环创建多个用户
- hosts: 172.16.1.41
  tasks:
    - name: create user
      user: name={{ item }}
      with_items:
        - oldgirl01
        - oldgirl02
        - oldgirl03
        - oldgirl04
        - oldgirl
   循环创建多个用户  多个用户uid数值是不同的
- hosts: 172.16.1.41
  tasks:
    - name: create user
      user: name={{ item.name }} uid={{ item.uid }}
      with_items:
        - {name: "oldgirl06", uid: "3006"}
        - {name: "oldgirl07", uid: "3007"}
        - {name: "oldgirl08", uid: "3008"}
        - {name: "oldgirl09", uid: "3009"}
    - name: check create user info
      shell: grep oldgirl0 /etc/passwd
      register: user_info
    - debug: msg={{ user_info.stdout_lines }}
  1. 剧本编写忽略错误
cat test_忽略错误.yaml
- hosts: 172.16.1.41
  tasks:
    #- name: install rsync
    #  shell: yum install -y rsync
    - name: create rsync user
      shell: useradd rsync -M -s /sbin/nologin
      ignore_errors: yes
    - name: create backup dir
      shell: mkdir /backup
      ignore_errors: yes
    - name: boot server
      shell: systemctl start rsyncd
      ignore_errors: y
  1. 剧本标签设置功能
cat test_标签功能.yaml 
- hosts: 172.16.1.41
  tasks:
    - name: 01:安装软件
      yum: name=rsync state=installed
      ignore_errors: yes
    - name: 02:创建用户
      user: name=rsync create_home=no shell=/sbin/nologin
      ignore_errors: yes
      tags: create_user
    - name: 03:创建目录
      file: path=/backup state=directory
   ansible-playbook -t create_user test_标签功能.yaml             --- 执行剧本中标签任务
   ansible-playbook --skip-tags create_user test_标签功能.yaml    --- 跳过指定标签任务,执行其他任务
   ansible-playbook -t create_user,create_dir test_标签功能.yaml  --- 执行多个标签
  1. 剧本忽略采集功能
cat test_忽略采集.yaml 
- hosts: 172.16.1.41
  gather_facts: no
  tasks:
    - name: 01:安装软件
      yum: name=rsync state=installed
      ignore_errors: yes
    - name: 02:创建用户
      user: name=rsync create_home=no shell=/sbin/nologin
      ignore_errors: yes
      tags: create_user
    - name: 03:创建目录
    file: path=/backup state=directory
      tags: create_dir	
   说明: 可以提升剧本执行效率; 如果剧本中有判断功能,不能使用此参数
  1. 剧本信息触发功能
cat test_触发功能.yaml
- hosts: 172.16.1.41
 tasks:
   - name: 01:传输配置文件
     copy: src=/etc/ansible/ansible_playbook/rsyncd.conf dest=/etc/
     notify: rsync_restart
   - name: 02:启动服务程序
     service: name=rsyncd state=started
 handlers:
   - name: rsync_restart
     service: name=rsyncd state=restarted
  说明: 整体任务执行完毕,才会执行触发功能
发布了48 篇原创文章 · 获赞 1 · 访问量 1469

猜你喜欢

转载自blog.csdn.net/weixin_43876317/article/details/102980826