Day01 ansible
一.了解ansible概念
1.1Ansible简介
Ansible 是一种自动化工具,可以通过编写 YAML 文件来描述系统配置和管理任务,以便在多台服务器上批量执行操作。它提供了简单易用的语法,可以用来编写 playbooks 和 roles,以便自动化部署、配置、更新和管理多个服务器。
ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。
2.Ansible的工作原理
在ansible管理体系中,存在“管理节点”和“被管理节点”两种角色,被管理节点通常被称为”资产“
在管理节点,ansible将adhoc或者playbook转换为Python脚本,并通过ssh将这些Python脚本传递到被管理节点服务器上,在管理服务器上依次执行,并实时的将结果返回给管理节点。然后删除掉临时py文件。
3.ansible执行过程
1)加载配置文件位置,默认/etc/ansible/ansible.cfg
2)查找对应的主机配置文件,找到执行的主机或组,默认在/etc/ansible/hosts
3)加载对应的模块文件,没有就默认command
4)通过ansible将模块或命令生成对应的临时py脚本,将脚本传输到远程服务器
5)对应执行用户的家目录的.ansible/tmp/XXX/XXX.PY文件
6)给文件+x执行权限
7)执行脚本,返回结果
8)删除临时py脚本,退出
二.安装ansible
2.1yum安装
1)配置epel网络yum源
2)安装 #yum -y install ansible
2.2pip安装
yum install python-pip -y
pip install ansible
三.了解配置文件
3.1主配置文件
通过yum安装的ansible 主配置文件为 /etc/ansible/ansible.cfg,下面我们列出一些常见的参数
inventory = /etc/ansible/hosts # 这个参数表示资源清单inventory文件的位置
library = /usr/share/ansible # 指向存放Ansible模块的目录,支持多个目录方式,只要用冒号隔开就可以
forks = 5 # 并发连接数,默认为5
sudo_user = root # 设置默认执行命令的用户
remote_port = 22 # 指定连接被管节点的管理端口,默认为22端口
host_key_checking = False # 设置是否检查SSH主机的密钥,值为True/False。
timeout = 60 # 设置SSH连接的超时时间,单位为秒
log_path = /var/log/ansible.log # 指定一个存储ansible日志的文件(默认不记录日志)
3.2inventory文件
在 Ansible 中,inventory 文件是一种用于定义要管理的主机和组的文本文件。inventory 文件的主要作用是帮助 Ansible 管理和查找要配置的服务器。
在 inventory 文件中,主机可以按照组的方式进行分组,并且每个组可以定义与这些主机相关的变量。这些变量可以在 playbook 中使用,以便在不同的主机和组之间实现差异化的配置和管理。
以下为常的配置方式
[webservers]
192.168.141.12 #直接用IP定义
www.web3.com #用域名定义
web4 ansible_ssh_host=192.168.141.14 #设置主机别名
www[1:5] #支持通配符匹配
www1,www2...www5
#为主机单独定义变量
[atlanta]
host1 http_port=80 #定义主机名host1有一个http_port变量,变量值为80
192.168.141.12 http_port=81 #定义IP192.168.141.12主机有一个http_port变量,变量值为81
#为一个组指定变量
[atlanta:vars]
ntp_server=ntp.atlant.com #定义atlanta组的每一个主机都有ntp_server= ntp.atlant.com这个变量
#组可以包含其他组
[aa]
host1
hosr2
[ab]
host3
host4
[southeast:children]
aa
ab
southeast组包含了[aa][ab]组,有host[1:4]主机
hosts文件内置变量:
参数 | 用途 | 例子 |
---|---|---|
ansible_ssh_host | 定义hosts ssh 地址 | ansible_ssh_host=192.168.141.12 |
ansible_ssh_port | ssh 端口 | ansible_ssh_port=3000 |
ansible_ssh_user | 认证用户 | ansible_ssh_user=user |
ansible_ssh_pass | 认证密码 | ansible_ssh_pass=123 |
ansible_sudo | sudo用户 | ansible_sudo=www |
ansible_sudo_pass | sudo 密码 | ansible_sudo_pass=123 |
ansible_sudo_exe | sudo 路径 | ansible_sudo_exe=/usr/bin/suod |
ansible_connection | 定义hosts连接方式 | ansible_connection=local |
ansible_ssh_private_key_file | 定义私钥 | ansible_ssh_private_key_file=、root/key |
ansible_python_interpreter | 任务执行Python路径 | ansible_python_interpreter=/usrbin/python2. |
ansible_ssh_shell_type | shell 类型 | ansible_ssh_shell_type=bash |
ansible_*_interpreter | 其他语言解析路径 | ansible_*_interpreter=/usr/bin/ruby |