ansible常见概念总结

目录

1、play和playbook和role

2、幂等性

3、清单

4、配置文件(ansible.cfg)

5、变量

5.1 在playbook中使用变量:

5.2 在playbook中使用变量文件: 

6、事实

7、循环

8、处理程序

9、块

10、动态清单文件

11、角色

12、ansible常用目录结构


1、play和playbook和role

role由多个playbook组成,playbook由多个play组成,play由多个task组成。play是由yaml格式的文本文件。

playbook中play和任务列出的顺序很重要,因为ansible会按照相同的顺序运行它们

简单的playbook(一个play):

简单的playbook(两个play):

play使用关键字(remote_user、become):优先级高于配置文件 


2、幂等性

具有幂等性是ansible重要的特点。playbook运行一次和运行多次效果是一样的。不会改变系统状态。


3、清单

清单:你要操作哪些主机就放到清单里面,包含主机和主机组。

默认清单文件:/etc/ansible/hosts   

自定义清单文件:inventory

静态清单:

 


4、配置文件(ansible.cfg)

基本配置文件:/etc/ansible/ansible.cfg。

ansible  --version  可以看到这个路径,版本不同,可能位置不一样。

主目录:~/.ansible.cfg

运行ansible命令的目录创建ansible.cfg:./ansible.cfg

如果当前目录有配置文件就使用当前目录的配置文件,如果没有就去找用户家目录下的配置文件,如果也没有就去找/etc/ansible/ansible.cfg。实践中不常用/etc/ansible/ansible.cfg和~/.ansible.cfg

ANSIBLE_CONFIG环境变量可以定义配置文件的位置。


5、变量

变量可以存储值。

5.1 在playbook中使用变量:

5.2 在playbook中使用变量文件: 



6、事实

Ansible 事实(Facts)是指在执行 Ansible Playbook 时,Ansible 自动收集的有关目标主机的信息。这些信息包括主机名、IP 地址、操作系统类型、内存大小、CPU 数量等等。Ansible 事实可以在 Playbook 中使用,以便根据目标主机的不同情况执行不同的任务。

Ansible 事实可以通过 ansible_facts 变量在 Playbook 中访问。例如,要获取目标主机的 IP 地址,可以使用 ansible_facts['default_ipv4']['address']。

Ansible 事实可以通过多种方式收集,包括使用 Ansible 内置的模块、自定义模块、脚本等。默认情况下,Ansible 会自动收集一些基本的事实,如主机名、操作系统类型等。如果需要收集更多的信息,可以使用 Ansible 内置的模块,如 setup 模块,或者编写自定义模块和脚本来收集信息。

 


7、循环

在 Ansible 中,可以使用循环来重复执行某些任务或操作。循环可以用于遍历列表、字典或范围等数据结构。

 

 有条件的循环:when关键字


8、处理程序

处理程序是响应由其他任务触发的通知的任务。仅当任务在收管主机上更改了某些内容时,任务才通知其处理程序。每个处理程序具有全局唯一的名称,在playbook中任务块的末尾触发。如果没有任务通过名称通知处理程序,处理程序就不会运行。如果一个或多个任务通知处理程序,处理程序就会在play中的所有其他任务完成后运行一次。因为处理程序就是任务,所以管理员可以在处理程序中使用他们将用于任何其他任务的模块。通常而言,处理程序被用于重新引导主机和重新启动服务。处理程序可视为非活动任务,只有在使用notify语句显式调用时才会被触发。在下列代码片段中,只有配置文件更新并且通知了该任务时,restart apache处理程序才会重新启动Apache服务器:

playbook示例: 


9、块

块是对任务进行逻辑分组的子句,用于控制任务的执行方式。


10、动态清单文件

Ansible动态清单文件是一种特殊类型的清单文件,它不是静态的,而是在运行时动态生成的。这种清单文件通常用于管理大规模的、动态变化的环境,例如云环境或容器环境。

动态清单文件可以使用各种插件来生成,例如:
AWS EC2插件:可以从AWS EC2实例列表中生成清单文件。
OpenStack插件:可以从OpenStack实例列表中生成清单文件。
Docker插件:可以从Docker容器列表中生成清单文件。
Kubernetes插件:可以从Kubernetes集群中生成清单文件。
使用动态清单文件,可以轻松地管理大规模的、动态变化的环境,而无需手动维护清单文件。同时,动态清单文件也可以与Ansible的其他功能结合使用,例如动态变量、动态任务等。


11、角色

Ansible角色是一种组织和管理Ansible任务、变量和文件的方法。它们是一种可重用的、可组合的、可扩展的方式,可以使您的Ansible代码更加模块化和可维护。

一个角色通常包含以下内容:
tasks:包含要执行的任务列表。
handlers:包含要在任务完成后执行的处理程序列表。
templates:包含要使用的模板文件。
files:包含要复制到目标主机的文件。
vars:包含角色特定的变量。
defaults:包含角色默认变量的值。
meta:包含角色依赖关系和其他元数据。
使用角色可以使您的Ansible代码更加模块化和可重用,同时也可以使您的代码更加易于维护和扩展。


12、ansible常用目录结构

在Ansible中,通常使用以下目录结构:

.
├── ansible.cfg
├── inventory
├── playbook.yml
├── group_vars/
│   └── all.yml
├── host_vars/
│   └── server1.yml
├── roles/
│   ├── role1/
│   │   ├── tasks/
│   │   ├── handlers/
│   │   ├── templates/
│   │   ├── files/
│   │   ├── vars/
│   │   ├── defaults/
│   │   └── meta/
│   └── role2/
│       ├── tasks/
│       ├── handlers/
│       ├── templates/
│       ├── files/
│       ├── vars/
│       ├── defaults/
│       └── meta/
└── library/

ansible.cfg:Ansible的配置文件,可以在其中指定一些全局配置选项。
inventory:主机清单文件,用于定义要管理的主机和主机组。
playbook.yml:Ansible的主要执行文件,包含了要执行的任务和配置。
group_vars/:存放主机组的变量文件,可以在其中定义主机组的变量。
host_vars/:存放主机的变量文件,可以在其中定义单个主机的变量。
roles/:存放Ansible角色的目录,每个角色都有自己的目录结构。
library/:存放自定义的Ansible模块。
以上是一个常见的Ansible目录结构,可以根据实际需求进行调整和扩展。


13、register

Ansible的register模块用于将任务的输出结果保存到一个变量中,以便后续任务使用。

---
- name: 确保可以安装软件
  hosts: 192.168.33.153
  tasks:
    - name: 测试是否可以下载软件
      shell: yum -y reinstall tree
      register: YumOutput
      ignore_errors: true

    - name: copy rpm.repo
      copy:
        src: ./files/rpm.repo
        dest: /etc/yum.repos.d/rpm.repo
      when: YumOutput.rc != 0

    - name: mount
      shell: mount /dev/sr0 /mnt
      when: YumOutput.rc != 0


 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值