Anisble中的任务执行控制_ansible在debug的时候怎么控制changed为 false

tasks:
- name: file module
file:
name: /mnt/{{item}}
state: present

  loop:
    - westos_file1
    - westos_file2

#2.循环散列或字典列表#

  • name: create file
    hosts: 172.25.0.254
    tasks:
    • name: file module
      service:
      name: “{{ item.name}}”
      state: “{{ item.state }}”
      loop:
      • name: httpd
        state: started
      • name: vsftpd
        state: stopped

 脚本练习:


在系统中完成以下用户操作


1.建立用户组shengchan,caiwu,jishu并满足以下要  
 \* shengchan组id为8000  
 \* caiwu组id为8001  
 \* jishu组id为8002


2.建立westosuser,linux,lee,westosadmin等用户完成以下要求  
 \* westosuser用户的附加组为shengchan和jishu  
 \* lee的主组为caiwu附加组为技术,lee的uid和gid必须一致  
 \* linux为系统账号不能直接被操作者使用  
 \* westosamdin用户不属于以上三个部门,但是可以在系统中自由的管理用户


3.  
 \* 以上用户密码均为westos,并要求用户首次登陆时强制修改密码  
 \* 设定以上用户密码必须在30天内进行休改,并在过期前2天发出警告求




  • name: create file
    hosts: list1
    tasks:
    • name: create group
      group:
      name: “{{item.name}}”
      gid: “{{item.gid}}”
      state: present
      loop:
      • name: shengchan
        gid: 8000
      • name: caiwu
        gid: 8001
      • name: jishu
        gid: 8002
      • name: westosuser
        gid: 8003
      • name: linux
        gid: 8004
      • name: westosadmin
        gid: 8005
    • name: create user
      user:
      name: “{{item.name}}”
      groups: “{{item.groups}}”
      group: “{{item.group}}”
      shell: “{{item.shell}}”
      uid: “{{item.uid}}”
      password: ‘$6 4 R B S j f u Y I t 694 m E i 4RBSjfuYIt694mEi 4RBSjfuYIt694mEiKetzruRtGRzZIPA4B/hDCimIWCalsOkzCH2GEoHvRTZpDXWL1xf.0.SYDg.SQ6KwtMUDKsNIcH0MAd3AHBRET0’
      loop:
      • name: westosuser
        groups: shengchan, jishu
        group: 8003
        shell: /bin/bash
        uid: 8003
      • name: lee
        groups: jishu
        group: caiwu
        shell: /bin/bash
        uid: 8001
      • name: linux
        groups: linux
        group: linux
        shell: /sbin/nologin
        uid: 8004
      • name: westosadmin
        groups: westosadmin
        group: westosadmin
        shell: /bin/bash
        uid: 8005
    • name: westosadmin
      lineinfile:
      path: /etc/sudoers
      regexp: “^root”
      insertafter: “^root”
      line: “westosadmin {{ansible_facts[‘fqdn’]}}=(root) NOPASSWD: /sbin/useradd, /sbin/userdel, /sbin/usermod”
    • name: configure password messages
      shell: chage -d 0 -M 30 -W 2 “{{item}}”
      loop:
      • westosuser
      • lee
      • westosadmin

#### 二、条件



when:

  • 条件1
  • 条件2

#条件判断#
= value == “字符串”,value == 数字
< value < 数字

  	value >  数字

<= value <= 数字

= value >= 数字
!= value != 数字
is defined value value is defined 变量存在
is not defined value is not defined 变量不存在
bool变量 为true value value的值为true
bool变量 false not value value的值为false
value in value2 value的值在value2列表中
#多条条件组合#
when:
条件1 and 条件2

  • 条件1
  • 条件2

when:
条件1 or 条件2

when: >
条件1
or
条件2


测试题:


\*建立大小为1500M名为exam\_lvm的 lvm在westos组中


\*如果westos不存在请输入:


vg westos is not exist


\*如果westos大小不足1500M清输出:


vg westos is less then 1500M


并建立800M大小的lvm


三、触发器



notify: 触发器当遇到更改是触发handlers

handlers: 触发器触发后执行的动作

#实例#

  • name: create virtualhost for web server
    hosts: 172.25.0.254
    vars_files:
    ./vhost_list.yml
    tasks:

    • name: create document
      file:
      path: “{{web2.document}}”
      state: directory
    • name: create vhost.conf
      copy:
      dest: /etc/httpd/conf.d/vhost.conf
      content:
      “<VirtualHost *:{{web1.port}}>\n\tServerName {{web1.name}}\n\tDocumentRoot {{web1.document}}\n\tCustomLog logs/{{web1.name}}.log combined\n\n\n<VirtualHost *:{{web2.port}}>\n\tServerName {{web2.name}}\n\tDocumentRoot {{web2.document}}\n\tCustomLog logs/{{web2.name}}.log combined\n”
      notify:
      restart apache

    handlers:

    • name: restart apache
      service:
      name: httpd
      state: restarted

脚本练习:


搭建一个vsftpd服务




  • name: creat vsftpd
    hosts: all
    tasks:

    • name: install vsftpd
      dnf:
      name: vsftpd
      state: present

    • name: config vsftpd.conf
      template:
      src: ~/ansible/vsftpd.conf.j2
      dest: /etc/vsftpd/vsftpd.conf
      notify: restart vsftpd

    • name: config ftpdir
      file:
      path: /var/ftp/pub
      group: ftp
      mode: ‘0775’
      setype: “public_content_rw_t”

    • name: set sebool
      seboolean:
      name: ftpd_anon_write
      state: yes
      persistent: yes

    • firewalld:
      zone: public
      service: ftp
      permanent: yes
      state: enabled
      immediate: yes

    handlers:

    • name: restart vsftpd
      service:
      name: vsftpd
      state: restarted

#### 四、处理失败任务


1.ignore\_errors#  
 #作用:  
 当play遇到任务失败是会终止  
 ignore\_errors: yes    将会忽略任务失败使下面的任务继续运行


#实例#




  • name: test
    hosts: all
    tasks:
    • name: test
      dnf:
      name: sun
      state: present
      ignore_errors: yes
    • name: create file
      file:
      path: /mnt/sun
      state: touch


测试效果:


![](https://img-blog.csdnimg.cn/20201227122518104.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)


2.force\_handlers#  
 #作用:  
 #当任务失败后play被终止也会调用触发器进程


#示例#




  • name: apache change port
    hosts: all
    force_handlers: yes
    vars:
    http_port: 8080
    tasks:

    • name: configure apache conf file
      lineinfile:
      path: /etc/httpd/conf/httpd.conf
      regexp: “^Listen”
      line: “Listen {{ http_port }}”
      notify: restart apache

    • name: install error
      dnf:
      name: westos
      state: latest

    handlers:

    • name: restart apache
      service:
      name: httpd
      state: restarted
      enabled: yes

验证:


![](https://img-blog.csdnimg.cn/20201227123116632.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1N1bl9fcw==,size_16,color_FFFFFF,t_70)


3.changed\_when#  
 #作用:  
 #控制任务在何时报告它已进行更改




  • name: apache change port
    hosts: all
    force_handlers: yes
    vars:
    http_port: 80
    tasks:
    • name: configure apache conf file
      lineinfile:
      path: /etc/httpd/conf/httpd.conf
  • 12
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
森林防火应急联动指挥系统是一个集成了北斗定位/GPS、GIS、RS遥感、无线网络通讯、4G网络等技术的现代化智能系统,旨在提高森林火灾的预防和扑救效率。该系统通过实时监控、地图服务、历史数据管理、调度语音等功能,实现了现场指挥调度、语音呼叫通讯、远程监控、现场直播、救火人员生命检测等工作的网络化、智能化、可视化。它能够在火灾发生后迅速组网,确保现场与指挥心的通信畅通,同时,系统支持快速部署,适应各种极端环境,保障信息的实时传输和历史数据的安全存储。 系统的设计遵循先进性、实用性、标准性、开放性、安全性、可靠性和扩展性原则,确保了技术的领先地位和未来的发展空间。系统架构包括应急终端、无线专网、应用联动应用和服务组件,以及安全审计模块,以确保用户合法性和数据安全性。部署方案灵活,能够根据现场需求快速搭建应急指挥平台,支持高并发视频直播和大容量数据存储。 智能终端设备具备三防等级,能够在恶劣环境下稳定工作,支持北斗+GPS双模定位,提供精确的位置信息。设备搭载的操作系统和处理器能够处理复杂的任务,如高清视频拍摄和数据传输。此外,设备还配备了多种传感器和接口,以适应不同的使用场景。 自适应无线网络是系统的关键组成部分,它基于认知无线电技术,能够根据环境变化动态调整通讯参数,优化通讯效果。网络支持点对点和点对多点的组网模式,具有低功耗、长距离覆盖、强抗干扰能力等特点,易于部署和维护。 系统的售后服务保障包括安装实施服务、系统维护服务、系统完善服务、培训服务等,确保用户能够高效使用系统。提供7*24小时的实时故障响应,以及定期的系统优化和维护,确保系统的稳定运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值