核心概念
中文官网
官网
官网2.6版本
一、架构
组件:
- Inventory:Ansible 管理的主机信息,包括 IP 地址、SSH 端口、账号、密码等;
- Modules:任务均有模块完成,也可以自定义模块,例如经常用的脚本;
- Plugins:使用插件增加 Ansible 核心功能,自身提供了很多插件,也可以自定义插件。例如 connection 插件,用于连接目标主机。callback 插件可以将结果输出到其他地方。vars 插件将定义的变量注入到 Ansible 中运行
- Playbooks:“剧本”,模块化定义一系列任务,供外部统一调用。Ansible 核心功能
安装
[root@slave-1 ~]# yum install ansible
常用配置项
# vi /etc/ansible/ansible.cfg
[defaults]
inventory = /etc/ansible/hosts
forks = 5 //并发数
sudo_user = root
remote_port = 22
host_key_checking = False
timeout = 10
log_path = /var/log/ansible.log
private_key_file = /root/.ssh/id_rsa
[root@slave-1 ansible]# vi /etc/ansible/hosts
192.168.2.62 ansible_ssh_user=root ansible_ssh_pass=123456
[webservers]
192.168.2.63 ansible_ssh_user=root ansible_ssh_pass=123456
192.168.2.64 ansible_ssh_user=root ansible_ssh_pass=123456
[root@slave-1 ansible]# ansible webservers -m command -a "df -h"
192.168.2.64 | CHANGED | rc=0 >>
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 475M 0 475M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 7.7M 479M 2% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/centos-root 17G 1.6G 16G 10% /
/dev/sda1 1014M 138M 877M 14% /boot
tmpfs 98M 0 98M 0% /run/user/0
192.168.2.63 | CHANGED | rc=0 >>
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 475M 0 475M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 7.7M 479M 2% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/centos-root 17G 1.6G 16G 9% /
/dev/sda1 1014M 138M 877M 14% /boot
tmpfs 98M 0 98M 0% /run/user/0
[root@slave-1 ansible]# ansible webservers -a "df -h"
192.168.2.64 | CHANGED | rc=0 >>
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 475M 0 475M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 7.7M 479M 2% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/centos-root 17G 1.6G 16G 10% /
/dev/sda1 1014M 138M 877M 14% /boot
tmpfs 98M 0 98M 0% /run/user/0
192.168.2.63 | CHANGED | rc=0 >>
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 475M 0 475M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 7.7M 479M 2% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/centos-root 17G 1.6G 16G 9% /
/dev/sda1 1014M 138M 877M 14% /boot
tmpfs 98M 0 98M 0% /run/user/0
[root@slave-1 ansible]# ansible all -a "df -h"
192.168.2.63 | CHANGED | rc=0 >>
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 475M 0 475M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 7.7M 479M 2% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/centos-root 17G 1.6G 16G 9% /
/dev/sda1 1014M 138M 877M 14% /boot
tmpfs 98M 0 98M 0% /run/user/0
192.168.2.64 | CHANGED | rc=0 >>
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 475M 0 475M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 7.7M 479M 2% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/centos-root 17G 1.6G 16G 10% /
/dev/sda1 1014M 138M 877M 14% /boot
tmpfs 98M 0 98M 0% /run/user/0
192.168.2.62 | CHANGED | rc=0 >>
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 475M 0 475M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 52M 435M 11% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/centos-root 17G 5.2G 12G 31% /
/dev/sda1 1014M 138M 877M 14% /boot
tmpfs 98M 0 98M 0% /run/user/0
[root@slave-1 ansible]# ansible webservers -a "echo {{ansible_ssh_pass}}"
192.168.2.63 | CHANGED | rc=0 >>
123456
192.168.2.64 | CHANGED | rc=0 >>
123456
常用模块:ping,command(默认),shell,yum,service,copy,user,gr
oup,file,template,unarchive
ansible webservers -m setup
主机变量 组变量
[root@slave-1 ansible]# vi /etc/ansbile/group_vars/webservers.yml
命令行工具(ad-hoc命令)
command 和 shell 模块
文件传输(copy、file 和 synchronize)
软件包管理(yum 和 apt)
用户和组(user)
从源代码控制部署应用(git)
定时任务管理(cron)
管理服务(service 和 systemd)
收集系统信息(setup)
语法检查与 debug 调试
在变更时运行特定任务(handlers)
任务控制(tags)
Playbook 定义变量与使用

includ import
条件 when
循环 loop
- hosts: webservers
gather_facts: no
tasks:
- name: 测试
debug: msg="{{item}}"
loop: [0,1,2,3,4,5,6,7,8,9,10]
when: item > 5
模板(jinja2)template
动态渲染ngnix配置文件
案例:管理 Nginx 配置文件

role目录结构
role基本使用
示例参考:https://github.com/ansible/ansible-examples
? Ansible 部署 K8s 二进制集群:https://github.com/lizhenliang/ansibleinstall-k8s

案例:自动部署 Web 服务器