将要管理的一批主机,设置分组,并且在其中还可以加入其他变量
[web]
web1.example.com
web2.example.com
web3.example.com
192.168.1.1
192.168.1.2
192.168.1.3
[web1]
web[1:3].example.com
192.168.1.[1:3]
[web2]
web1.example.com ansible_ssh_host=‘123’
web2.example.com ansible_ssh_user=‘devops’
web3.example.com ansible_ssh_port=8089
[web3]
web1.example.com
web2.example.com
web3.example.com
[web3:var]
ansible_ssh_host=8089
[web1]
192.168.1.[1:3]
[web2]
web[1:3].example.com
[web_grop:children]
web1
web2
参数 | 说明 |
---|---|
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 的路径… |
名称 | 路径 | 优先级 |
---|---|---|
全局文件 | /etc/ansible/ansible.cfg | 3 |
用户个人文件 | ~/.ansible.cfg | 2 |
工作目录配置文件 | ./ansible.cfg | 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提示输入密码 |
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 |