1. 构建ansible清单
1. 清单的作用
将要管理的一批主机,设置分组,并且在其中还可以加入其他变量
2.定义清单的方法
1.普通的定义
[web] web1.example.com web2.example.com web3.example.com 192.168.1.1 192.168.1.2 192.168.1.3
2.连续定义
[web1] web[1:3].example.com 192.168.1.[1:3]
3.使用内置变量定义
1.争对主机的变量
[web2] web1.example.com ansible_ssh_host=‘123’ web2.example.com ansible_ssh_user=‘devops’ web3.example.com ansible_ssh_port=8089
2.针对组的变量
[web3] web1.example.com web2.example.com web3.example.com [web3:var] ansible_ssh_host=8089
4.包含子组的定义
[web1] 192.168.1.[1:3] [web2] web[1:3].example.com [web_grop:children] web1 web2
3.验证清单
- 清单在默认位置
ansible host-or-group --list-hosts - 清单在自定义位置
ansible host-or-group -i inventory --list-hosts
4.inventory相关的参数(变量)
参数 | 说明 |
---|
ansible_ssh_host | 将要连接的远程主机名.与你想要设定的主机的别名不同的话,可通过此变量设置. | | | ansible_ssh_port | ssh端口号.如果不是默认的端口号,通过此变量设置. | | | ansible_ssh_user | 默认的 ssh 用户名 | | | ansible_ssh_pass | ssh 密码(这种方式并不安全,我们强烈建议使用 --ask-pass 或 SSH 密钥) | | | ansible_sudo_pass | sudo 密码(这种方式并不安全,我们强烈建议使用 --ask-sudo-pass) | | | ansible_sudo_exe (new in version 1.8) | sudo 命令路径(适用于1.8及以上版本) | | | ansible_connection | 与主机的连接类型.比如:local, ssh 或者 paramiko. Ansible 1.2 以前默认使用 paramiko.1.2 以后默认使用 ‘smart’,‘smart’ 方式会根据是否支持 ControlPersist, 来判断’ssh’ 方式是否可行. | | | ansible_ssh_private_key_file | ssh 使用的私钥文件.适用于有多个密钥,而你不想使用 SSH 代理的情况. | | | ansible_shell_type | 目标系统的shell类型.默认情况下,命令的执行使用 ‘sh’ 语法,可设置为 ‘csh’ 或 ‘fish’. | | | ansible_python_interpreter | 目标主机的 python 路径.适用于的情况: 系统中有多个 Python, 或者命令路径不是"/usr/bin/python",比如 *BSD, 或者 /usr/bin/python,不是 2.X 版本的 Python.我们不使用 “/usr/bin/env” 机制,因为这要求远程用户的路径设置正确,且要求 “python” 可执行程序名不可为 python以外的名字(实际有可能名为python26).,与 ansible_python_interpreter 的工作方式相同,可设定如 ruby 或 perl 的路径… |
2.管理ansible配置文件
名称 | 路径 | 优先级 |
---|
全局文件 | /etc/ansible/ansible.cfg | 3 | 用户个人文件 | ~/.ansible.cfg | 2 | 工作目录配置文件 | ./ansible.cfg | 1 |
1.配置文件中的设置
基本的配置 [defaults] 部分设置ansible的默认值 [privilege-escalation] 配置Ansible如何在受管主机上执行特权 典型的Ansible配置
[defaults]
inventory = ./inventory
remote_user = user
ask_pass = false
[privilege-escalation]
become = true
become_mothod = sudo
become_user = root
become_ask_pass = false
常用的指令及其描述
指令 | 描述 |
---|
inventory | 指定清单文件的路径 | remote_user | 要在受管主机上登录的用户的名称。如果没有指定将使用当前用户 | ask_pass | 提示是否输入SSH密码。如果使用SSh公钥身份验证,则可以让这项为false | become | 连接后是否自动在受管主机上切换用户(通常是切换到root) | become_method | 如何切换用户(通常是sudo) | become_ask_pass | 是否需要为become_false提示输入密码 |
3.运行临时命令
- 快速执行简单任务时所需的工具
- 命令
ansible host-pattren -m module [-a 'module arguments'] [-i inventory]
Ansible 模块 (使用ansible-doc -l 查看安装了哪些模块)
参数 | 模块 |
---|
文件模块 | copy:将本地文件复制到受管主机 file:设置文件的权限和其他属性 lineinfile:确定特定的行是否在文件中 synchronize:使用rsync同步内容 | 软件包模块 | package:使用操作系统本机的自动检软件包管理器管理软件包 yum:使用yum软件包管理器管理软件包 apt:使用APT软件包管理器管理软件包 dnf:使用DNF软件包管理器管理软件包 gem:管理Ruby gem pip:从PyPI管理python软件包 | 系统模块 | firewalld:使用firewalld管理任意端口和服务 reboot:重新启动计算机 serveice:管理服务 user:添加,删除和管理用户账户 | Net Tools | get_url:通过HTTP,HTTPS或FTP下载文件 nmctl:管理网络 uri:与WEB服务交互 |
ansible命令行选项
配置文件指令 | 命令行选项 |
---|
inventory | -i | remote_user | -u | become | –become、-b、-method | become_metod | –become-method | become_user | -become-user | become_ask_pass | –ask-become-pass、-K |
|