1. Ansible对于企业运维的重大意义
- 将多台主机的控制集中到一台,通过shell设置好,集中控制。
- ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、
- func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。
- ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,
- ansible只是提供一种框架。
2. Ansible的安装
- epel源
- dnf install ansible -y
- ansible --viersion
- ansible的基本信息:
- /etc/ansible/ansible.conf ##全局配置文件,默认很少修改
- /etc/ansible/hosts ##全局主机清单清单文件
3. 前期环境的配置
- 一台ansible服务器(172.25.254.110)
- 两台受控主机(网段分别为172.25.254.20、172.25.254.30)
- ansible主机的设定
如果电脑卡就关掉图形界面,使用无图形界面!!
配置完毕!!!
- 配置受控主机172.25.254.20、172.25.254.30
主机名分别为node1.westos.org、node2.westos.org
4. 清单
- /etc/ansible/hosts ##控制默认清单列表位置
- 清单写主机名或者ip都可以,每行一个
- node1.westos.com
- node2.westos.com
- 172.25.254.20
- 清单查看:
- ansible westos --list-hosts ##显示westos列表中的ip
- ansible westos1 --list-hosts ##显示westos1列表中的ip
- ansible ungrouped --list-hosts ##显示没有分组的列表ip
- ansible all --list-hosts ##显示所有分组列表内容
- 清单形式:
- #单层清单#
- [list1]
- node1.westos.com
- node2.westos.com
- [list2]
- node2.westos.com
- [list3]
- 172.25.254.240
- #嵌套清单#
- [westos:children] ##格式必须对
- list1
- list3
- #主机规格的范围化操作
- ##通过指定主机名称或IP的范围可以简化Ansible主机清单
- #语法:
- #[start:end]
- 示例:
- [westostest]
- 172.25.254.[100:108]
- #ansible命令指定清单的正则表达式
- * ##所有
##172.25.254.*
##westos*
示例
ansible 'westos*' -i /mnt/westos --list
ansible '172.*' -i /mnt/westos --list
- : ##逻辑或
##:westos1:linux:
##172.25.254.100:172.25.254.200
示例
ansible 'westos_list1:westos_list2' -i /mnt/westos --list
- :& ##逻辑与
##"westos1:&linux"
##主机即在westos1清单也在linux清单
示例
ansible 'westos_list2:&westos_list3' -i /mnt/westos --list
- :! ##逻辑非
##'westos1:!linux'
##在westos1中不在linux中
示例
ansible 'westos_list2:!westos_list3' -i /mnt/westos --list
- ~ ##以关键字开头,执行优先级高
~(str1|str2) ##以条件1或者条件2开头
示例
ansible '~westos' -i /mnt/westos --list
ansible '~list:!westos' --list-hosts -i /mnt/westos
ansible '~list:westos' --list-hosts -i /mnt/westos
ansible '~list:&westos' --list-hosts -i /mnt/westos
-
-
- ansible westos -m ping -u root -k ##通过密码输入,来ping通westos列表中的用户ip。m表示执行指令
- ansible westos --list-hosts -i /mnt/westos ##i指定列表文件
-
指定文件的测试
正则表达式测试
5. Ansible配置文件参数详解
- 1. 格式
- ansible 清单中组名称 -m 模块 -u remote_user(远程主机用户)
- 2. 配置文件的分类与优先级
- /etc/ansible/ansible.cfg #基本配置文件,找不到其他配置文件此文件生效
- ~/.ansible.cfg #用户当前目录中没有ansible.cfg此文件生效
- ./ansible.cfg #优先级最高
- 3. 常用配置参数
- #[default] ##基本信息设定
- inventory= ##指定清单路径
- remote_user= ##在受管主机上登陆的用户名称,未指定使用当前用户
- ask_pass= ##是否提示输入SSH密码,如果公钥登陆设定为false
- library= ##库文件存放目录
- local_tmp= ##本机临时命令执行目录
- remote_tmp= ##远程主机临时py命令文件存放目录
- forks= ##默认并发数量
- host_key_checking= ##第一次连接受管主机时是否要输入yes建立host_key
- sudo_user= ##默认sudo用户
- ask_sudo_pass= ##每次在受控主机执行ansible命令时是否询问sudo密码
- module_name= ##默认模块,默认使用command,可以修改为shell
- log_path= ##日志文件路径
- #[privilege_escalation] ##身份信息设定
- become= ##连接后是否自动切换用户
- become_method= ##设定切换用户的方式,通常用sudo
- become_user= ##在受管主机中切换到的用户,通常为root
- become_ask_pass ##是否需要为become_method提示输入密码,默认为false
inventory= ##指定清单路径
local_tmp= ##本机临时命令执行目录
remote_tmp= ##远程主机临时py命令文件存放目录
remote_user= ##在受管主机上登陆的用户名称,未指定使用当前用户
临时执行目录
指定用户
ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。
ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。
[privilege_escalation] ##身份信息设定
- 远程需要在系统及文件夹或者需要修改没有权限的文件,就需要设定身份信息,可以直接以root用户身份执行。
(此处的10.20,10.30和254.20,254.30一样)