自动化运维工具----Ansible - inventory 主机清单

1,397 阅读2分钟

image.png

一 Inventory简介

Inventory支持对主机进行分组,每个组可以定义多个主机,每个主机都可以定义在任何一个或多个主机内

1.1 Ansible配置文件的优先级

  1. 首先找执行ansible命令的当前目录中,是否有ansible.cfg文件
  2. 如果找不到,再找当前用户的家目录下是否有ansible.cfg
  3. 如果还找不到,就使用全局配置文件/etc/ansible/ansible.cfg
  4. 要检查当前使用的是哪个配置文件可以使用ansible --version 命令,会显示配置文件路径

1.2 Ansible命令常用参数

参数	功能
-m	要执行的模块,默认为command
-a	指定模块的参数
-u	ssh连接的用户名,默认用root,ansible.cfg中可以配置
-b,–become	变成那个用户身份,不提示密码
-k	提示输入ssh登录密码,当使用密码验证的时候用
-s	sudo运行
-U	sudo到哪个用户,默认为root
-K	提示输入sudo密码,当不是NOPASSWD模式时使用
-C	只是测试一下会改变什么内容,不会真正去执行
-c	连接类型(default=smart)
-f	fork多少进程并发处理,默认为5个
-i	指定hosts文件路径,默认default=/etc/ansible/hosts
-I	指定pattern,对已匹配的主机中再过滤一次
-list-host	只打印有哪些主机会执行这个命令,不会实际执行
-M	要执行的模块路径,默认为/usr/share/ansible
-o	压缩输出,摘要输出
–private-key	私钥路径
-T	ssh连接超时时间,默认是10秒

1.3 主机清单文件演示

1.3.1 通过列表的方式标识主机范围

image.png

image.png

1.3.2 主机端口指定

image.png

1.3.4 如果使用的是主机名

db-test-a.example.com
db-test-b.example.com
db-test-c.example.com
db-test-d.example.com
db-test-e.example.com
db-test-f.example.com

可以这样标识一个范围
db-test-[a:f].example.com

1.4 inventory 中的变量

inventory变量名含义
ansible_hostansible连接节点时的IP地址
ansible_port连接对方的端口号,ssh连接时默认为22
ansible_user连接对方主机时使用的用户名。不指定时,将使用执行ansible或ansible-playbook命令的用户
ansible_password连接时的用户的ssh密码,仅在未使用密钥对验证的情况下有效
ansible_ssh_private_key_file指定密钥认证ssh连接时的私钥文件
ansible_ssh_common_args提供给ssh,sftp,scp命令的额外参数
ansible_become允许进行权限额外提升
ansible_become_method指定提升权限的方式,列如可使用sudo/runas等方式
ansible_become_user提升为哪个用户的权限,默认提升为root
ansible_become_password提升为指定用户权限时的密码

1.4.1 主机变量

image.png image.png

image.png

1.4.2 端口号不对无法执行命令

image.png

image.png

1.4.3 组变量

image.png

image.png

image.png

image.png

1.4.4 all特殊变量

image.png

1.4.5 组嵌套

image.png image.png