ansible /etc/ansible/hosts 文件的作用

news/2024/7/3 5:57:24

 

参考:ansible 学习_ansible中文文档_Direct_的博客-CSDN博客

安装:

sudo apt-get install ansible

sudo apt install -y sshpass

pip install ansible

/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.1
ansible_ssh_port#用于指定连接到被管理主机的ssh端口号,默认是22ansible_ssh_port=2000
ansible_ssh_user#ssh连接时默认使用的用户名ansible_ssh_user=dba
ansible_ssh_pass#ssh连接时的密码ansible_ssh_pass=test1234
ansible_sudo#sudo用户ansible_sudo=dba
ansible_sudo_pass #使用sudo连接用户时的密码ansible_ssh_pass=test1234
ansible_sudo_exec#如果sudo命令不在默认路径,需要指定sudo命令路径ansible_sudo_exec=/usr/bin/sudo
ansible_ssh_private_key_file#秘钥文件路径,秘钥文件如果不想使用ssh-agent管理时可以使用此选项ansible_ssh_private_key_file=/root/key
ansible_shell_type#目标系统的shell的类型,默认shansible_shell_type=bash
ansible_connectionSSH 连接的类型: local , ssh , paramiko,在 ansible 1.2 之前默认是 paramiko ,后来智能选择,优先使用基于 ControlPersist 的 ssh (支持的前提)ansible_connection=local
ansible_python_interpreter#用来指定python解释器的路径,默认为/usr/bin/python 同样可以指定ruby 、perl 的路径ansible_python_interpreter=/usr/bin/python2.7
ansible_*_interpreter #其他解释器路径,用法和ansible_python_interpreter类似,这里"*"可以是ruby或才perl等其他语言ansible_*_interpreter=/usr/bin/ruby

hosts文件写法举例

# vi /etc/ansible/hosts 

连续的IP写法

 
  1. # 连续的IP写法,表示192.168.1.20到192.168.1.50,共31台主机:

  2. [test1]

  3. name1 ansible_ssh_host=192.168.1.[20:50] ansible_ssh_user="root" ansible_ssh_pass="1234" ansible_ssh_port=22

不进行分组的写法 

 
  1. # 放在所有分组前面,可以为server起个名字,

  2. # 可以显示加参数的方式,也可以直接写ip,分组时写法也一样:

  3. # 这里name1,name2为别名

  4. name1 ansible_ssh_host=172.16.79.231 ansible_ssh_user=dba ansible_ssh_pass=test1234

  5. name2 ansible_ssh_host=172.16.79.232

  6. 172.16.79.233

分组写法

 
  1. # 中括号内为分组名,可以对某一类型的服务器进行分类,执行命令时,可按照组进行操作

  2. [oraservers]

  3. name1 ansible_ssh_host=172.16.79.231 ansible_ssh_user=dba ansible_ssh_pass=test1234

  4. name2 ansible_ssh_host=172.16.79.232

  5. 172.16.79.233

  6. [webservers]

  7. web1 ansible_ssh_host=172.16.79.233

  8. web2 ansible_ssh_host=172.16.79.234

带参数的群组写法

 
  1. # 带参数的群组,为组内所有的成员指定共同的参数,

  2. # 这样就不需要在每一个IP后面重复写系统的参数,格式为 [组名:vars]

  3. [parserver]

  4. name1 ansible_ssh_host=172.16.79.232

  5. name2 ansible_ssh_host=172.16.79.233

  6. [parserver:vars]

  7. ansible_ssh_user=dba

  8. ansible_ssh_pass=test1234

群组整合

 
  1. # 群组整合,格式为 [<newgroup_name>:children],

  2. # children底下为父群的子群组,可直接调用父组名

  3. [group:children]

  4. oraservers

  5. webservers

  6. #示例二

  7. [nginx]

  8. 192.168.56.108

  9. [tomcat]

  10. 192.168.56.109

  11. [zabbix-agent:children]

  12. nginx

  13. tomcat

单独秘钥管理 

 
  1. #ssh root@服务器B

  2. #ssh-****** 如果要重命名可以自己指定, 回车后生成**对

  3. # echo ~/.ssh/id_rsa.pub >> known_hosts 这里把生成的公钥放入known_hosts

  4. # 如果自己配置了ssh_config, 关闭了known_hosts, 可能就需要写进~/.authorized_keys里面去了.

  5. # 把服务器B上的私钥回传到ansible执行的服务器A的ssh_keys里, 命名为

  6. # 服务器B_ip_.key

  7. # 给ssh_keys文件夹授权为700, 一定要700, 其它的都会报错.

  8. # 建立hosts文件里面指定server, 每个server一行.

  9. [test_server]

  10. 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 <groupname>|<ip>|<name> --list
    • Eg: 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里


http://lihuaxi.xjx100.cn/news/1436070.html

相关文章

Linux命令200例:tree用于以树状结构显示文件和目录

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;全栈领域新星创作者✌。CSDN专家博主&#xff0c;阿里云社区专家博主&#xff0c;2023年6月csdn上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &…

[国产MCU]-BL602开发实例-实时时钟(RTC)

RTC 文章目录 RTC1、RTC介绍2、RTC使用实例RTC(real-time clock)为操作系统中的实时时钟设备,为操作系统提供精准的实时时间和定时报警功能。当设备下电后,通过外置电池供电,RTC继续记录操作系统时间;设备上电后,RTC提供实时时钟给操作系统,确保断电后系统时间的连续性。…

力扣70.爬楼梯(动态规划)

/*** author Limg* date 2023/08/11* 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。* 每次你可以爬 1 或 2 个台阶。* 你有多少种不同的方法可以爬到楼顶呢&#xff1f; */#include<iostream> using namespace std; int climbStairs(int n); int main() {int n0;cin>&…

1. 如何爬取自己的CSDN博客文章列表(获取列表)(博客列表)(手动+python代码方式)

文章目录 写在最前步骤打开chrome浏览器&#xff0c;登录网页按pagedown一直往下刷呀刷呀刷&#xff0c;直到把自己所有的博文刷出来然后我们按F12&#xff0c;点击选取元素按钮然后随便点一篇博文&#xff0c;产生如下所示代码然后往上翻&#xff0c;找到头&#xff0c;复制然…

哪些人会看作业指导书?作业指导书怎样才能发挥作用?

一般人普遍人为&#xff0c;作业指导书就是给操作人员看的。其实不然&#xff0c;那么哪些人会看作业指导书&#xff1f;大致可以分为: 第一类&#xff1a;新到工作岗位的员工。其中包括新进员工和新转岗位的员工&#xff0c;他们都会在师傅或领班组长的带领指导下&#xff0c;…

python re 模块 正则表达式

一、正则表达式基本符号 ^ 表示匹配字符串的开始位置 (例外 用在中括号中[ ] 时,可以理解为取反,表示不匹配括号中字符串)$ 表示匹配字符串的结束位置* 表示匹配 零次到多次&#xff08;记忆方法&#xff1a;符号是星星&#xff0c;天上的星星可以是无数个也可以看不到&#x…

可以救命的地震预警你开了吗?

如何在手机上开启地震预警功能呢&#xff1f; 山东地震&#xff0c;很多人都不知道还有地震预警这回事&#xff0c;很多人都发微博说幸好被手机的地震预警叫醒了&#xff0c;但是手机预警是需要自己设置的。 在中国&#xff0c;手机地震预警功能是由中国地震局和三大运营商合作…

MacOS创建NetworkExtension 【保姆级流程】

MacOS创建NetworkExtension (保姆级流程) 因为自己工作中的项目&#xff0c;是运行在macos系统上&#xff0c;其中的一部分功能是通过NetworkExtension来获取系统中的流量来做相应的处理&#xff0c;所以也想自己创建一个NetworkExtension&#xff0c;三天&#xff0c;不知道踩…