核心概念


中文官网

官网

官网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 定义变量与使用
 
 ![image](https://img2022.cnblogs.com/blog/2750168/202202/2750168-20220223214008204-1113351181.png)
 
 
 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 配置文件
![image](https://img2022.cnblogs.com/blog/2750168/202202/2750168-20220223233756910-2114236327.png)


role目录结构

role基本使用

示例参考:https://github.com/ansible/ansible-examples
? Ansible 部署 K8s 二进制集群:https://github.com/lizhenliang/ansibleinstall-k8s

![image](https://img2022.cnblogs.com/blog/2750168/202202/2750168-20220223235627948-733942094.png)

案例:自动部署 Web 服务器