展览设计网站有哪些,南海网站智能推广,网站做微信支付宝支付接口,wordpress 仿牛杂文章目录 环境介绍 ansible ssh配置 操作测试/etc/hosts 配置Inventory文件 主机与组主机变量、组变量把一个组变成另一个组的子成员变量太多了#xff0c;不好管理怎么办#xff1f;来#xff0c;分文件定义主机变量和组变量 操作环境介绍
为了练习方便#xff0c;本次使…文章目录 环境介绍 ansible ssh配置 操作测试/etc/hosts 配置Inventory文件 主机与组主机变量、组变量把一个组变成另一个组的子成员变量太多了不好管理怎么办来分文件定义主机变量和组变量 操作环境介绍
为了练习方便本次使用一台虚拟机多个主机名模拟多台虚拟机操作1省事省力方便学习。
操作系统 centos7虚拟机数量 1台使用root账户进行操作
ansible ssh配置
操作
# 若已经配置则无须再次执行此处命令
[rootmaster ~]# ssh-keygen
[rootmaster ~]# cd .ssh/
[rootmaster .ssh]# cat id_rsa.pub authorized_keys测试
ssh localhost/etc/hosts 配置
[rootmaster ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6172.16.176.200 master test1 test2 test3Inventory文件 Ansible 可同时操作属于一个组的多台主机,组和主机之间的关系通过 inventory 文件配置. 默认的文件路径为 /etc/ansible/hosts。简单理解/etc/ansible/hosts就是Inventory文件。目的就是存储主机与组之间的关系。 有点懵主机我可能知道但什么是组靠什么定义组
主机与组
主机 /etc/hosts 配置的主机名通过DNS获取的域名都可称为主机 组一类主机的组合
[rootmaster ansible]# cat /etc/ansible/hosts
master #主机此处和/etc/hosts内容对应
test1[test] # 主机组包含一系列主机,可以附加端口号的
test1:22
test2[test_other] # test2 机属于 test组也属于test_other组
test2
test3方括号[]中是组名,用于对系统进行分类,便于对不同系统进行个别的管理。一个主机可以属于多个组哦 如果有主机的SSH端口不是标准的22端口,可在主机名之后加上端口号,用冒号分隔。 端口号不是默认设置时,可明确的表示为:
master:5309假设你有一些静态IP地址,希望设置一些别名,但不是在系统的 host 文件中设置,又或者你是通过隧道在连接,那么可以设置如下:
testhost ansible_ssh_host192.168.0.200 ansible_ssh_port22主机变量、组变量
变量变量可分为系统变量2和自定义变量3系统变量说明
ansible_ssh_host将要连接的远程主机名.与你想要设定的主机的别名不同的话,可通过此变量设置.ansible_ssh_portssh端口号.如果不是默认的端口号,通过此变量设置.ansible_ssh_user默认的 ssh 用户名ansible_ssh_passssh 密码(这种方式并不安全,我们强烈建议使用 --ask-pass 或 SSH 密钥)ansible_sudo_passsudo 密码(这种方式并不安全,我们强烈建议使用 --ask-sudo-pass)ansible_sudo_exe (new in version 1.8)sudo 命令路径(适用于1.8及以上版本)ansible_connection与主机的连接类型.比如:local, ssh 或者 paramiko. Ansible 1.2 以前默认使用 paramiko.1.2 以后默认使用 smart,smart 方式会根据是否支持 ControlPersist, 来判断ssh 方式是否可行.ansible_ssh_private_key_filessh 使用的私钥文件.适用于有多个密钥,而你不想使用 SSH 代理的情况.ansible_shell_type目标系统的shell类型.默认情况下,命令的执行使用 sh 语法,可设置为 csh 或 fish.ansible_python_interpreter目标主机的 python 路径.适用于的情况: 系统中有多个 Python, 或者命令路径不是/usr/bin/python,比如 \*BSD, 或者 /usr/bin/python不是 2.X 版本的 Python.我们不使用 /usr/bin/env 机制,因为这要求远程用户的路径设置正确,且要求 python 可执行程序名不可为 python以外的名字(实际有可能名为python26).与 ansible_python_interpreter 的工作方式相同,可设定如 ruby 或 perl 的路径....主机变量就是一个主机可携带其他参数而这些参数可以给playbooks使用 组变量一个组下的变量可供给这个组的全部成员使用目的就是减少重复配置
[rootmaster ansible]# cat hosts
master
test1
test_local ansible_ssh_host192.168.0.200[test]
test1
test2[test_other]
test2
test3[test:vars] # 组变量标识:vars要设置组变量这个标志是必须的
http_port2222 # test组内的所有主机都可以拿到此变量
max_proc20# test组内的所有主机都可以拿到此变量把一个组变成另一个组的子成员
[rootmaster ansible]# cat hosts
master
test1
test_local ansible_ssh_host192.168.0.200[test]
test1
test2[test_other]
test2
test3[test:vars]
http_port2222
max_proc20# 在这里 test_all test test_other 是等于关系哦
[test_all:children] # test_all组包含 test组及test_other组的所有成员
test
test_other变量太多了不好管理怎么办来分文件定义主机变量和组变量 不同于 inventory 文件/etc/ansible/hosts(INI 格式),这些独立(子)文件的格式为 YAML 操作
创建自定义变量文件目录
# 创建默认目录
[rootmaster ansible]# mkdir -p /etc/ansible/group_vars
[rootmaster ansible]# mkdir -p /etc/ansible/host_vars为主机和组各创建一个yaml格式文件
# 主机变量对应test1
[rootmaster host_vars]# cat /etc/ansible/host_vars/test1
---
ntp_server: 192.168.202.111# 组变量对应[test]组
[rootmaster group_vars]# cat /etc/ansible/group_vars/test
---
http_port: 22
database: localhost还有更进一步的运用,你可以为一个主机,或一个组,创建一个目录,目录名就是主机名或组名.目录中的可以创建多个文件, 文件中的变量都会被读取为主机或组的变量,支持版本 Ansible1.4
# 主机变量对应test1
[rootmaster host_vars]# cat /etc/ansible/host_vars/test1/config
---
ntp_server: 192.168.202.111# 组变量对应[test]组
[rootmaster group_vars]# cat /etc/ansible/group_vars/test/config
---
http_port: 22
database: localhostTip: Ansible 1.2 及以上的版本中,group_vars/ 和 host_vars/ 目录可放在 inventory 目录下,或是 playbook 目录下. 如果两个目录下都存在,那么 playbook 目录下的配置会覆盖 inventory 目录的配置. 即一台虚拟机的一个ip地址对应多个hostname ↩︎ 系统变量像前面的ansible_ssh_host等ansible已经占有的变量 ↩︎ 自定义变量就是自己定义的变量并没有其他要求 ↩︎