综合架构之playbook剧本扩展功能

  • 1剧本扩展的6个功能
  • 2优化之前写过的剧本
ansible

1.剧本判断功能说明

之所以能判断是因为在运行这个脚本的时候它在收集远程主机的信息
但同时也是坑 但如nfs服务停的时候运行剧本的时候会夯住,centos7.6可以自动停掉。centos6会夯一段时间然后报错。
TASK [Gathering Facts] *********************************************************

   三台主机:
    NFS服务客户端(nfs服务启动)          NFS服务端
   centos7  10.0.0.7                centos7 10.0.0.31
   centos6  10.0.0.8 
   centos7  10.0.0.9
  如何判断三台主机哪台是centos6,centos7?

   - 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")
         #判断主机名是否为自己对应的主机名 最好先用ansible命令测试一下。
   - hosts: 172.16.1.41
     tasks:
       - name: create file for 41 host
         file: path=/tmp/centos state=directory
         when: (ansible_distribution == "CentOS")
         #判断系统是为是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个数(只显示总的个数)。

问题: 获取主机信息,以及子信息?

方法一:
- hosts: rsync
  tasks:
    - name: touch file
      file: path=/etc/oldboy01.txt state=touch
      when: (ansible_eth1.ipv4.address == "172.16.1.41")
方法二:
- hosts: rsync
  tasks:
    - name: touch file
      file: path=/etc/oldboy01.txt state=touch
      when: (ansible_eth1["ipv4"]["address"] == "172.16.1.41")

2.剧本信息循环功能

   循环创建多个用户
   - hosts: 172.16.1.41
     tasks:
       - name: create user
         user: name={{ item }}
         with_items:
           - oldgirl01
           - oldgirl02
           - oldgirl03
           - oldgirl04
           - oldgirl05
       - name: check create user info
         shell: lls -l home|grep oldgril
       - debug: msg={{ user_info.stdout_lines }}

     循环创建多个用户  多个用户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 
       - debug: msg={{ user_info.stdout_lines }}

3.剧本编写忽略错误 调试剧本

不会使用模块,使用shell模块的报错问题

   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: yes

4.剧本标签设置功能

   # 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 test_标签功能.yaml 
   ansible-playbook -t create_user,create_dir test_标签功能.yaml  --- 执行多个标签

5.剧本忽略采集功能

   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   
   #说明: 可以提升剧本执行效率; 如果剧本中有判断功能,不能使用此参数

6.剧本信息触发功能

   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
 //整体任务执行完毕,才会执行触发功能

二、多个剧本如何进行整合

  • 第一个历程: 确保每个剧本执行成功
  • 第二个历程: 进行剧本整合
  • 方式一: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      
   import_playbook: oxxx.yml
    import_playbook: rsync.yml
   import_playbook: nfs.yml
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,783评论 5 472
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,396评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,834评论 0 333
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,036评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,035评论 5 362
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,242评论 1 278
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,727评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,376评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,508评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,415评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,463评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,140评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,734评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,809评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,028评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,521评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,119评论 2 341