网站架构知识之Ansible剧本(day022)

1.剧本模式使用方法

1.创建/server/scripts/playbook目录,用于存放剧本

2.将/etc/ansible/hosts主机清单文件复制到该目录下,cp /etc/ansible/hosts .

3.书写剧本,剧本后缀名需要为yml,举报人你格式如下图,hosts代表执行的终端,与主机清单相对应,此处name为执行步骤,方便剧本执行出错定位错误。

4.执行剧本,ansible-playbook -i hosts 01.show.yml,此处-i,指定主机清单文件,01.show.yml为执行的

案列01:书写剧本,将管理端文件发送给所有被管理端

bash 复制代码
---
    - hosts: all
      tasks:
       - name: 01创建目录
         file:
            path: /server/files/
            state: directory
       - name: 02分发文件
         copy:
            src: /server/files/day022.txt
            dest: /server/files/

案例02:书写剧本,给所有被端粒段安装zabbix

bash 复制代码
---
   - hosts: all
     tasks:
      - name: 01
        file:
          path: /tmp/tools/app
          state: directory
      - name: 02
        ansible.builtin.get_url:
          validate_certs: no
          url: https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/6.0/rhel/7/x86_64/zabbix-agent2-6.0.7-1.el7.x86_64.rpm
          dest: /tmp/tools/app
      - name: 03
        yum:
          name: /tmp/tools/app/zabbix-agent2-6.0.7-1.el7.x86_64.rpm
          state: installed
      - name: 04
        systemd:
          name: zabbix-agent2
          enabled: yes
          state: started
                          

2.剧本的变量

1.在剧本中定义

2.变量文件

3.共用变量,主机组变量

4.register变量(注册变量)如:ip=`hostname -I`

剧本中定义使用方法:在host下一行定义

bash 复制代码
---
   - hosts: all
     vars:
        dir: /tmp/tools/app     (定义变量dir)
     tasks:
      - name: 01
        file:
          path: "{{ dir }}"
          state: directory

变量文件方法使用变量

1.定义变量文件的变量

bash 复制代码
---
   - hosts: all
     vars_files:变量文件路径

共用变量根据主机组使用变量,group_vars会自动根据主机清单匹配,剧本中直接使用变量。

bash 复制代码
xxxx-check.yml
 group_vars/
    lb/vars.yml  #存放lb组的变量
    web/vars.yml #存放web组的变量
    data/vars.yml #存放xxx组的变量
    all/vars.yml  #所有主机共用的变量
    一般使用all分组即可,把所有变量存放在一起,供剧本使用

register注册变量需要配合shell一起使用,如下所示

bash 复制代码
---
  - hosts: all
    tasks:
      - name: 01
        shell: date +%F
        register: shijian
      - name: 02
        debug:
          msg: "{{ shijian.stdout }}"

3.facts变量

facts变量是ansible的内置变量,通过setup模块获取

禁用facts变量可以提高ansible运行速度,hosts下一行写gather_facts:no

相关推荐
垚垚学技术_聚焦云原生12 天前
Ansible Vault 安全实践:敏感密码、密钥加密存储方案
安全·elasticsearch·ansible
广目软件14 天前
HA分布式架构采集节点变更操作手册20261029
运维·服务器·ansible·zabbix·prometheus
Moshow郑锴15 天前
Ansible 批量部署 Node.js 服务:ZIP 直解与共享目录分发两种方案对比
node.js·ansible
垚垚学技术_聚焦云原生15 天前
Ansible Playbook 进阶:when 条件、loop 循环、handlers 触发器落地
linux·ansible·自动化运维·devops
Moshow郑锴15 天前
GCP MIG 重建后 Ansible 初始化实战:PowerShell + NSSM 挂载 Windows 服务
windows·ansible
承渊政道17 天前
新增一台服务器时还要重新装Nginx?Ansible只改hosts目标列表,同一份Playbook继续执行
运维·nginx·ansible·内网穿透·cpolar
Helix25019 天前
Ansible混合环境自动化:Windows与Linux统一配置管理实战
windows·自动化·ansible·playbook·配置管理·winrm·混合环境
垚垚学技术_聚焦云原生20 天前
Ansible 变量体系详解:主机变量、组变量、全局变量优先级实战
ansible·自动化运维·devops·变量优先级
I'mChloe1 个月前
不再逐台装Docker:我用Ansible Playbook批量统一服务器环境
服务器·docker·ansible
筑梦之路1 个月前
Alibaba Cloud Linux 4 制作 Ansible RPM包实践(离线可复用)——筑梦之路
linux·运维·ansible