Ansible原理与安装部署
2020-03-06 11:42:33 47
一、Ansible原理
1.1 什么是Ansible
Ansible支持API接口调用,例如通过CMDB调用或公有云接口调用
Ansible是一个框架,基于模块、插件工作
基于SSH工作,即被管理端要支持SSH管理
通过playbooks来编写强大的配置、状态管理,实现自动化
1.2 Ansible重要组件说明
模块:Ansible由多种功能模块组成
playbook:Ansible剧本,使用yml语法调用不同功能模块完成特定的功能
roles:Ansbiel角色,可以使用ansible-galaxy命令下载第3方的roles角色。
ansible-vault:文件加密工具
ansilbe-console:基于console与用户进行交互
ansible-doc:帮助文档,-l所有模块,-s简要帮助
1.3 Ansible执行过程及原理说明
加载配置文件,默认是/etc/ansible/ansible.cfg
加载对应模块
生产临时py文件,并传输到目标机器的~/.ansible/tmp目录下
给py文件加上+x权限,执行并返回结果
删除py文件并sleep 0 退出
1.4 Ansible执行状态说明
绿色:执行成功,不需要做改变
黄色:执行成功,对目标主机做变更
红色:执行失败
二、Ansible安装与配置
2.1 安装Ansible
[root@ansible ~]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) [root@ansible ~]# uname -a Linux ansible 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux #配置epel源 [root@ansible ~]# cat /etc/yum.repos.d/epel-7.repo [epel] name=Extra Packages for Enterprise Linux 7 - $basearch baseurl=http://mirrors.aliyun.com/epel/7/$basearch failovermethod=priority enabled=1 gpgcheck=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 [epel-debuginfo] name=Extra Packages for Enterprise Linux 7 - $basearch - Debug baseurl=http://mirrors.aliyun.com/epel/7/$basearch/debug failovermethod=priority enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 gpgcheck=0 [epel-source] name=Extra Packages for Enterprise Linux 7 - $basearch - Source baseurl=http://mirrors.aliyun.com/epel/7/SRPMS failovermethod=priority enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 gpgcheck=0 #安装Ansible [root@ansible ~]# yum install ansible -y #查看已安装Ansible版本 [root@ansible ~]# ansible --version ansible 2.8.2 config file = /etc/ansible/ansible.cfg configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules'] ansible python module location = /usr/lib/python2.7/site-packages/ansible executable location = /usr/bin/ansible python version = 2.7.5 (default, Oct 30 2018, 23:45:53) [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] [root@ansible yum.repos.d]# ansible-2.8.2-1.el7.noarch
查看Ansible相关文件
yum info ansible rpm -qa ansible rpm -ql ansibel | less
2.2 Ansible配置文件
/etc/ansible/
├── ansible.cfg # Ansible主配置文件
├── hosts #用来定义被管理的机器清单
└── roles #该目录用于定义角色
Ansible配置文件
/etc/ansible/ansible.cfg
主要参数说明 #关闭过时参数告警
deprecation_warnings=False
#关闭command告警
command_warnings=False
#首次连接不检查,配合下面的playbook实现免密码ssh登录
host_key_checking=False
#设置并行数量
forks=40
#开启日志
log_path = /var/log/ansible.log
#ssh超时时间
timeout = 30
2.3 hosts主机清单
cd /etc/ansible vim hosts #分组 [mons] #设置主机别名 ceph-node-1 ansible_ssh_host=172.16.93.1 [client] 172.16.93.1:2222 #同时也支持域名和主机名,最终解释到IP #支持正则表达式 [kvm_node_all] 172.16.93.[6:9] #设置分组主机变量 [kvm_node_all:vars] ansible_ssh_user=root ansible_ssh_pass=Efly1234 ansible_ssh_port=22 #自动义变量 my_name=zhangsan #主机的继承关系,会继承父的所有变量 [kvm_node_all:children] client
2.4 Ansible管理机与被管理机做秘钥认证(可选)
# 生成秘钥 ssh-keygen #生成后会得到下面2个文件 [root@ansible ~]# tree /root/.ssh/ /root/.ssh/ ├── id_rsa └── id_rsa.pub # 将公钥写入被管理机 ssh-copy-id 192.168.199.52 #或 ssh-copy-id -i /root/.ssh/id_rsa.pub -p 22 root@192.168.199.52
下一期,我们继续来探讨Ansible的基本使用和常用模块实践。