当前位置: 代码迷 >> 综合 >> ansible Inventory
  详细解决方案

ansible Inventory

热度:24   发布时间:2024-01-04 20:48:31.0

什么是 Inventory?

? Ansible 可同时操作属于一个组的多台主机,组合主机之间的关系通过 Inventory 文件配置,默认的路径为 /etc/ansible/hosts

案例:

192.168.116.101[webservers]
192.168.116.102
tianci.com

192.168.116.101 表示不属于任何组,就是一台服务器

[ ] 内的为组名,一个主机可以属于不同的组,一台服务器可以同时A 和 B两个组

主机可以是 IP地址 也可以是 域名

Ansible Inventory 如何指定连接端口库

  • 如果连接的端口不是 22 ,需要指定对应的端口

1)修改Hosts 文件

  • 在 Hosts 文件中,在域名或者IP地址,加上冒号端口号

例子:

[webservers]192.168.116.102:8868tianci.com:9963

Ansible Inventory 为主机起别名

  • ip或域名太长,起个别名
name ansible_ssh_port=port ansible_ssh_host=ip
web ansible_ssh_port=22 ansible_ssh_host=192.168.116.102 ansible_ssh_host=web

参数:

name						别名ansible_ssh_port=			ssh连接的端口号ansible_ssh_host=			ssh连接的主机ansible_ssh_user=			ssh连接的用户ansible_ssh_pass=			ssh登录的密码ansible_sudo_pass=			sudo密码,普通用户,但是可以使用sudo获取权限ansible_sudo_exe			sudo执行的命令路径ansible_connection			与主机的连接类型,例 local、sshansible_ssh_private_key_file	ansible_shell_type			目标系统的shell 系统
  • 默认使用ROOT用户登录

    • 但是我们不想使用ROOT 登录
name ansible_ssh_port=port ansible_ssh_host=ip ansible_ssh_user=user-name
web ansible_ssh_port=22 ansible_ssh_host=192.168.116.102 ansible_ssh_host=web

Ansible Inventory 分组内机器太多

  • 加入要部署 192.168.116.101–150 中的 50 台机器,在编写的时候比较麻烦

  • 使用IP地址

    • [ ] 表示一个范围, 101–150 的主机
[web servers]
192.168.116.[101:150]
  • 使用域名

    • 不仅支持数字,英文字符也可以
[web servers]
www[a-e].tianci.com

Ansible——Inventory 分文件管理

  • 当组特别多时,不好进行管理,所以需要份文件管理
    • 一个文件就是一个组
    • 在 /etc/ansible 目录下建立目录
      • group_vars 存放分组信息,一个文件就是一个组,文件名就是组名
      • host_vars 存放不分组的信息,散台
/etc/ansible/group_vars/webservers
/etc/ansible/group_vars/dbservers

Ansible Patterns

  • 在 Ansible 中 Patterns 是指我们通过类正则表达式的方式,决定于那台主机进行交互

1) 指定Host机器

  • 指定单个Host
ansible 192.168.116.103 -m ping
  • all 或者星号(*)
ansible all -m ping
  • 指定一组连续的机器
ansible 192.168.116.* -m ping
  • 指定不连续的机器
ansible 192.168.116.103:192.168.116.105 -m ping

2) 指定组

  • 指定单个组
ansible webserves -m ping
  • 指定多个组
ansible webserves:dbservers -m ping
  • 指定在 webservers组但是不在 dbservers组的
ansible webserves:!dbservers -m ping
  • 指定同时在 webservers 组 和 dbservers组的
ansible webserves:&dbservers -m ping