Ansible之/etc/ansible/hosts的介绍与写法 您所在的位置:网站首页 变量列表的写法 Ansible之/etc/ansible/hosts的介绍与写法

Ansible之/etc/ansible/hosts的介绍与写法

2024-07-15 20:20| 来源: 网络整理| 查看: 265

参考文章:/etc/ansible/hosts的介绍与写法_种瓜得瓜,种豆得豆-CSDN博客_ansible hosts

/etc/ansible/hosts 文件的作用

/etc/ansible/hosts 是主机清单配置文件,由 ansible.cfg文件中的 inventory 变量配置,默认值为/etc/ansible/hosts 在使用ansible命令前,需要对hosts文件进行相关主机清单配置

使用说明

1.可以不对主机进行分组,如果不指定分组,需要配置在所有的分组前 2.可以对主机进行分组,中括号里包含的名字代表组名 3.主机可以使用域名,主机名,ip地址表示,一般以IP居多4.常用内置参数

参数名称作用说明举例ansible_ssh_host#用于指定被管理的主机的真实IPansible_ssh_host=192.168.1.1ansible_ssh_port#用于指定连接到被管理主机的ssh端口号,默认是22ansible_ssh_port=2000ansible_ssh_user#ssh连接时默认使用的用户名ansible_ssh_user=dbaansible_ssh_pass#ssh连接时的密码ansible_ssh_pass=test1234ansible_sudo#sudo用户ansible_sudo=dbaansible_sudo_pass #使用sudo连接用户时的密码ansible_ssh_pass=test1234ansible_sudo_exec#如果sudo命令不在默认路径,需要指定sudo命令路径ansible_sudo_exec=/usr/bin/sudoansible_ssh_private_key_file#秘钥文件路径,秘钥文件如果不想使用ssh-agent管理时可以使用此选项ansible_ssh_private_key_file=/root/keyansible_shell_type#目标系统的shell的类型,默认shansible_shell_type=bashansible_connectionSSH 连接的类型: local , ssh , paramiko,在 ansible 1.2 之前默认是 paramiko ,后来智能选择,优先使用基于 ControlPersist 的 ssh (支持的前提)ansible_connection=localansible_python_interpreter#用来指定python解释器的路径,默认为/usr/bin/python 同样可以指定ruby 、perl 的路径ansible_python_interpreter=/usr/bin/python2.7ansible_*_interpreter #其他解释器路径,用法和ansible_python_interpreter类似,这里"*"可以是ruby或才perl等其他语言ansible_*_interpreter=/usr/bin/ruby

hosts文件写法举例

# vi /etc/ansible/hosts 

连续的IP写法 # 连续的IP写法,表示192.168.1.20到192.168.1.50,共31台主机: [test1] name1 ansible_ssh_host=192.168.1.[20:50] ansible_ssh_user="root" ansible_ssh_pass="1234" ansible_ssh_port=22 不进行分组的写法  # 放在所有分组前面,可以为server起个名字, # 可以显示加参数的方式,也可以直接写ip,分组时写法也一样: # 这里name1,name2为别名 name1 ansible_ssh_host=172.16.79.231 ansible_ssh_user=dba ansible_ssh_pass=test1234 name2 ansible_ssh_host=172.16.79.232 172.16.79.233 分组写法 # 中括号内为分组名,可以对某一类型的服务器进行分类,执行命令时,可按照组进行操作 [oraservers] name1 ansible_ssh_host=172.16.79.231 ansible_ssh_user=dba ansible_ssh_pass=test1234 name2 ansible_ssh_host=172.16.79.232 172.16.79.233 [webservers] web1 ansible_ssh_host=172.16.79.233 web2 ansible_ssh_host=172.16.79.234 带参数的群组写法 # 带参数的群组,为组内所有的成员指定共同的参数, # 这样就不需要在每一个IP后面重复写系统的参数,格式为 [组名:vars] [parserver] name1 ansible_ssh_host=172.16.79.232 name2 ansible_ssh_host=172.16.79.233 [parserver:vars] ansible_ssh_user=dba ansible_ssh_pass=test1234 群组整合 # 群组整合,格式为 [:children], # children底下为父群的子群组,可直接调用父组名 [group:children] oraservers webservers #示例二 [nginx] 192.168.56.108 [tomcat] 192.168.56.109 [zabbix-agent:children] nginx tomcat 单独秘钥管理  #ssh root@服务器B #ssh-keygen 如果要重命名可以自己指定, 回车后生成密钥对 # echo ~/.ssh/id_rsa.pub >> known_hosts 这里把生成的公钥放入known_hosts # 如果自己配置了ssh_config, 关闭了known_hosts, 可能就需要写进~/.authorized_keys里面去了. # 把服务器B上的私钥回传到ansible执行的服务器A的ssh_keys里, 命名为 # 服务器B_ip_.key # 给ssh_keys文件夹授权为700, 一定要700, 其它的都会报错. # 建立hosts文件里面指定server, 每个server一行. [test_server] 10.0.1.5 ansible_ssh_private_key_file=ssh_keys/10.0.1.5.key ansible_ssh_user=root Ansible 命令调用方式 按名称调用 ansible name1 -m ping调用所有host机器 ansible  all  -m ping按ip调用 ansible 172.16.79.233 -m ping按组调用 ansible webservers -m ping两个组一起调用,以":"连接多个组 调用两个主机组的写法,以下webservers和dbservers都会被调用:ansible parserver:oraservers -m ping在webservers组中但不在dbsersers中的调用 ansible webservers:!dbservers -m win_ping在webservers组中并且在dbservers组中的才会调用: ​​​​​​​ansible webservers:&dbservers -m ping对整合后的群组进行调用,会调用父群group下的子组oraservers和webservers下所有的成员 ansible group -m ping在调用前加~,代表正则表达式 ​​​​​​​​​​​​​​ansible ~(web|db).*.91it.org -m win_ping组合的例子 ​​​​​​​webserver:dbservers:&nginx:!ntp列出主机清单 ansible || --listEg: ansible oraservers --list自定义新的主机清单文件 cat /etc/ansible/test-hosts

[testserver] 10.10.10.1 10.10.10.2

# 以-i指定新的主机清单文件ansible -i /etc/ansible/test-hosts testserver -m ping

hosts文件中没有定义的IP或别名,在进行调用中,会提示错误。ansible对单台服务器的调用,服务器IP或域名必须有写在hosts里



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有