RedHat Linux 8 中ansible程序 part7 项目管理

本文详细介绍Ansible项目管理技巧,包括如何灵活选择主机、管理动态清单、配置并行任务及使用serial关键字确保服务高可用。同时,深入探讨包含与导入文件的方法,提升playbook的模块化与复用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ansible项目管理

利用主机模式选择主机

使用通配符匹配多个主机

- hosts: '*' 	# * 表示匹配所有主机
- hosts: '*.example.com'  #表示匹配后面是.example.com主机名的所有
- hosts: '172.25.254.*' #表示ip前面是172.25.254的所有主机

通过列表匹配主机或主机组

- hosts: www1.example.com,www2.example.com,172.25.254.250 	#通过主机名或IP
- hosts: webservers,servers	#通过主机组或嵌套组

也可以将通配符和列表等一起使用

- hosts: webservers,&westos 	#即属于 webserver 组,也属于 westos 组 
- hosts: westos,!servera.lab.example.com	#匹配 westos 组中所有主机,但是 servera.lab.example.com 除外 
- all,!servera.lab.example.com 	#所有主机除了 servera.lab.example.com
管理动态清单

编写动态清单程序
将 INI 格式的清单转换为 JSON 格式
命令:ansible-inventory -i inventory --list
在这里插入图片描述
转换格式后,可以清晰看到列出的主机列表信息

配置并行

在企业中我们使用ansible去配置自动化更新时,ansible的默认配置中会有一个最大连接数的设置,可以通过配置文件 /etc/ansible/ansible.cfg 查看属性:
在这里插入图片描述
或使用命令:ansible-config dump | grep -i forks
在这里插入图片描述
如果在运行ansible时需要设定最大同时连接数,在命令执行时添加参数 -f 或者 --forks 参数来指定并行数
例: ansible all -m command -a ‘date’ -f 3

在 playbook 中,我们在更新发生在负载均衡服务器,更新完成会重启,可能导致后端所有 web 服务器停止服务, 可以使用 serial 关键字来分批运行。

--- 
- name: Rolling update 
  hosts: webservers 
  serial: 2 
  tasks: 
    - name: Install apache 
      yum: 
        name: httpd 
        state: latest 
      notify: restart apache 

  handlers: 
    - name: restart apache 
      service: 
        name: httpd 
        state: restarted

**ps:**serial 参数还有一个优点:在更新时如果出现问题,那么在前 2 台发生问题是 playbook 就会 停止运行,后面的服务器不会执行,那么也就保证了服务的高可用

包含和导入文件

大型 playbook 管理起来比较复杂,可以用模块化的方式管理
两种方法:包含、导入

导入 playbook
例 1:
在主playbook中导入子playbook

 - name: configure webserver 
   import_playbook: web.yml

#######
- name: Install web 
  hosts: webservers 
  tasks: 
    - import_tasks: tasks.yml

所以我们只在主playbook写任务的大框架,其他的任务执行都重写编写任务playbook,这样既方便查询管理,又使整个项目主体简介明了

注意: 使用导入时,when 等条件语句应用于导入的每个任务;循环不能作用于导入的任务

包含playbook

--- 
- name: Install web 
  hosts: webservers 
  tasks: 
    - include_tasks: tasks.yml

为外部 play 和任务定义变量
为了提高剧本的复用性,我们将任务设置为变量写入剧本,然后写包含变量的 playbook 导入包含任务的 playbook即可
例:
编写任务剧本,写入变量

---
- name: Install the {{ packages }} 
  yum: 
    name: "{{ packages }}" 
    state: latest 

- name: Start the {{ service }} 
  service: 
    name: "{{ service }}" 
    enabled: true 
    state: started

编写包含变量值的剧本

- name:Set up web
  hosts: webservers
  tasks: 
    - name: Import task 
      import_tasks: task.yml 
      vars: 
        package: httpd 
        service: httpd
大型项目执行的目录结构说明

大型项目需要将每个块的内容分开存放,保证项目运行的顺畅,并且方便检测
差不多是这样的一个分类结构,将模块分开存放
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Howei__

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值