ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# :-: Inventory [TOC] ## Inventory文件 Inventory 是用来记录被纳管主机的文件,它的默认路径一般为`/etc/ansible/hosts` </br> </br> </br> ## 主机与组 编辑`/etc/ansible/hosts`文件 ``` host-1 192.168.1.2 [group-1] //组名 192.168.1.[10:20] web-[01:50]-server db-[a:f]-server // 可以使用这种方式简写可以定义范围内的主机 [group-2] test-host ansible_ssh_host=192.168.1.50 // 通过这种方式可以定义一个别名( 这个别名可以不在/etc/hosts 文件中) [group-3] // 指定远程连接的端口、用户名、密码、sudo时的密码 192.168.1.3 ansible_ssh_port=22 ansible_ssh_user=zwh ansible_ssh_pass='zwh' ansible_sudo_pass='zwh' [group-4] // 设置连接方式 192.168.1.4 ansible_connection=ssh ansible_ssh_user=zwh 192.168.15 ansible_connection=local ansible_ssh_user=zwh ``` ## 设置变量 #### 给主机设置变量 ``` [test] host1 http_port=80 var1=88 var2=888 host2 http_port=8080 va1=99 var2=999 ``` #### 给组设置变量 ``` [test] host1 host2 [test:vars] http_port=80 var1=88 var2=888 ``` ## 把一个组设置为另一个组的子成员 > 子成员的变成可以通过命令`/usr/bin/ansible-playbook` 使用 > 但是不能给 `/usr/bin/ansible` 使用 ``` [group-1] host-1 host-2 [group-2] host-3 host-4 [group-3:children] //group-3设置包含 group-1组 和 group-2组 group-1 group-2 [group-3:vars] var1=a var2=b [group-4:children] group-3 host-5 host-6 ``` ## 分文件定义 Host 和 Group 变量 当有很多个变量的时候,可以将这些变量分开不同的文件来存放,但是这些文件的格式应该是 </n> 假设 Inventory 文件还是在 `/etc/ansible/hosts` 文件中,其中有一个叫做`host-1`主机 这个`host-1` 主机分别属于`group-1`、`group-2`、`group-3` 三个组,则可以用下列的方式为这三个组分别设置组变量 ``` /etc/ansible/group_vars/group-1 /etc/ansible/group_vars/group-2 /etc/ansible/group_vars/group-3 ``` 其中`/etc/ansible/group_vars/group-1`的文件类似下面这样的 yaml 文件 ``` --- var_1: value-1 var_2: value-2 ``` > 可以为一个主机,或一个组,创建一个目录,目录名就是主机名或组名 > 目录中的可以创建多个文件,文件中的变量都会被读取为主机或组的变量 比如一个 `web-server` 组分为 `apache` 和 `database` 两类变量(方便分类管理变量): ``` /etc/ansible/group_vars/group-1/web /etc/ansible/group_vars/group-1/database ``` 在 `web-server` 组里的主机都能访问所有的变量 ## Inventory 文件参数说明 ``` ansible_ssh_host 将要连接的远程主机名.与你想要设定的主机的别名不同的话,可通过此变量设置. ansible_ssh_port ssh端口号.如果不是默认的端口号,通过此变量设置. ansibl_ssh_user 默认的 ssh 用户名 ansible_ssh_pass ssh 密码(这种方式并不安全,强烈建议使用--ask-pass或 SSH 密钥) ansible_sudo_pass sudo 密码(这种方式并不安全,我们强烈建议使用--ask-sudo-pass) ansible_sudo_exe sudo 命令路径(适用于1.8及以上版本) ansible_connection 与主机的连接类型.比如:local, ssh 或者 paramiko.Ansible1.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 ```