• ansible进阶1



    1 条件判断
    场景1 需要获取一个结果注入一个变量,然后针对变量值进行判断 && 在playbook中可以使用register将捕获命令的输出保存在临时变量中,然后使用debug模块进行显示输出&&最后通过when进行判断
     when条件统一判断条件 not var.stat.exists
       - name: prepare | Check if MySQL file is already configured.
         stat:
          path: "{{ mysql_file_path }}"
        register: mysql_file_result
        debug:
           var: mysql_file_result
       - name: prepare | Create software files path.
         file:
          path: "{{ mysql_pkg_path }}"
          state: directory
         when: not mysql_file_result.stat.exists

    场景2 针对已有变量进行直接判定,变量是预定义好的
       - name: install|cnf
         shell: sed -i "s/read_only.*.OFF/read_only=ON/g" /home/work/mysql/etc/my.cnf && sed -i "s/server-id.*.=1/server-id=2/g" /home/work/mysql/etc/my.cnf
         when: mysql_replication_role == 'slave'
    2 变量
      来源:变量分为传入变量和预定义变量两种,前者通过执行命令传入,后者在文件中统一定义后,其他地方直接引用变量名即可
     下面这个就是定义好的变量名和值 注册进入
    1 在yaml中定义
    - hosts: 127.0.0.1
    gather_facts: no
    vars:
    nginx_port: 8080
    delay_seconds: 3
    tasks:
    接下来就是roles的定义与使用,分为两种
       1 是入口的yml,和普通的yml定义一样.直接定义关键字vars即可
       2 是内部的预定义变量,这里要注意,是有指定的文件夹和文件的
    2 示例-我们发现,已经不用vars进行代替了,值也可以是其他变量
    roles/comm_mysql/defaults/main.yml
    ---
    mysql_version: "5.7.30"
    mysql_pkg_path: "/opt/software"
    mysql_install_path: "/usr/local"
    mysql_bin_file: "mysql-boost-{{ mysql_version }}-bin.tar.gz"
    3 handlers和notify
       1 hanlers其实算成另一种形式的tasks,主要是用来做触发动作,和task是对齐的
       2 niotify在task里调用,调用名为handlers的task_name
    经典场景就是:当配置文件更改需要重启服务时
    案例
    - name: stup web server
    hosts: dev
    tasks:- name: copy apache index.html
    copy:
    src: index.html
    dest: /var/www/html/index.html
    notify:
    - restart httpd  # 调用handler,只有在该Task状态为Change时才会触发Handler。

    handlers:
    - name: restart httpd
    service:
    name: httpd
    enabled: true
    state: restarted

    4  合并

    1 shell命令合并 &&

    2  可以采用{{item}} loop 创建文件文件夹 YUM安装(后续补充验证) 

  • 相关阅读:
    仿京东实现购物车页面中结算的动态滚动效果
    css reset的重置作用(可取还是不可取,取决于你)
    动态获取半弧的高度
    对话框以及延伸的时间轴展示
    移动前端meta
    解决相关css基础问题
    根据屏幕高度自适应页面高度
    数组比大小
    微信小程序如何解析html内容
    js调用局部打印功能并还原
  • 原文地址:https://www.cnblogs.com/danhuangpai/p/15789297.html
Copyright © 2020-2023  润新知