Ansible 基础概念
Ansible 基础概念
Ansible的基本环境、受控主机清单、Ansible的配置文件。
查看Ansible环境信息
absible --version
查看ansible控制端的环境信息,其中包括默认模块和自定义模块的文件目录以及ansible和python的版本。
1 | [student@workstation ~]$ ansible --version |
构建ansible清单
如果要用Ansible管理其他主机,需要将受控主机添加到清单中。
sudo vim /etc/ansible/hosts
使用静态清单配置
静态清单可以使用多种文件格式,包括INI和YAML。以下使用INI样式格式做例子。
在INI文件开头直接添加主机IP/域名
1 | servera.yeefire.com |
将主机进行分组
1 | [china-server] |
分组嵌套
分组嵌套需要在组名处使用:children
后缀。分组嵌套可以写在分组之前,他们之间没有绝对顺序。也可以编写与分组嵌套相同的组名,在使用这个名字的时候会将分组嵌套中所有的主机和该名字所对应的组名的主机包括在内。
1 | [china-server] |
简化主机配置
如果要配置范围主机,一个个添加会很麻烦,通常他们都会有固定的格式。
使用[START:END]
就可以范围。
1 | [us-server] |
localhost是一种特殊的存在,ansible知道他是本机,如果对localhost操作,ansible不使用ssh进行连接,这样可能导致执行结果和其他主机不一致。解决方案也很简单就是将localhost添加到inventory
ansible模块
模块是ansible的核心功能,近乎一些的操作都和模块相关。
使用ansible-doc可以阅读模块帮助手册
。
常用模块列表
模块类别 | 模块 | 描述 |
---|---|---|
文件模块 | copy | 将本地文件复制到受管主机 |
- | file | 设置文件的权限和其他属性 |
- | lineinfile | 确保特定行是否在文件中 |
- | synchronize | 使用rsync同步内容 |
软件包模块 | package | 自动检测操作系统的软件包管理器管理软件包 |
- | yum | yum管理软件包 |
- | apt | apt管理软件包 |
- | dnf | dnf管理软件包 |
- | pip | 从PyPI管理Python软件包 |
系统模块 | firewalld | 使用firewalld管理任意端口和服务 |
- | reboot | 重新启动计算机 |
- | service | 管理服务 |
- | user | 添加、删除、管理用户账户 |
NetTools模块 | get_url | 通过HTTP、HTTPS、FTP下载文件 |
- | nmcli | 管理网络 |
- | uri | 与Web服务交互 |
ansible -m setup
setup 模块用来收集主机详尽信息。
ansible -m setup localhost
在本地运行ansible的setup模块,收集本地的详尽信息。
ansible配置文件
有四种方式来让ansible读取配置文件,优先级依次由高到低:
使用环境变量
使用ANSIBLE_CONFIG环境变量,使用环境变量的优先级是最高的,也就是说如果Ansible运行时发现该变量存在,那么会直接使用它而不会理会其他三个位置的配置文件。
使用./ansible.cfg
如果在当前执行ansible的目录下存在ansible.cfg配置文件,那么在当没有配置环境变量时,就会使用此配置文件。(可以配置目录结构来方便管理不同的群组)
使用~/.ansible.cfg
使用当前用户Home目录下的ansible.cfg隐藏文件,在当前两个都没有配置的情况下,如果在用户家目录下存在配置文件则会使用此处的配置文件运行ansible。
使用/etc/ansible/ansible.cfg
使用/etc/ansible/ansible.cfg
全局配置文件是优先级最低的选择,在上面三个地点都没有找到ansible配置文件时则会使用此处的配置文件。如果这个文件也不存在的话……那就完全按照ansible的默认来操作了。
配置文件参数
inventory主机清单
在配置文件中配置好了主机清单后,在运行临时命令或者Playbook时就可以不用手动指定主机清单。
参数值这里inventory可以是文件,也可以是文件夹。当参数是文件夹时,会使用文件夹下全部的inventory主机清单。
1 | [defaults] |