龙空技术网

Ansible快速入门

运维胖子 178

前言:

如今我们对“ansiblecentos7”可能比较重视,你们都需要分析一些“ansiblecentos7”的相关资讯。那么小编同时在网上搜集了一些有关“ansiblecentos7””的相关知识,希望看官们能喜欢,大家一起来了解一下吧!

1. Ansible 介绍

Ansible 是 2012 年推出的一种通用自动化工具,可用于配置管理或工作流程自动化。配置管理是一种" **基础架构代码** "实践,它将事物编码,例如应该在系统上安装什么包和版本,或者应该运行什么守护进程。工作流自动化可能是从配置基础架构到部署软件的任何事情。Ansible 在 2015 年时被 Redhat 公司收购。

Ansible 是用 Python 编写的,它使用 SSH 在不同的机器上执行命令。Ansible 是无代理的,这使得入手更容易。您只需要在相关机器上安装 SSH 和 Python。Ansible 使用声明式 YAML 语言"playbook"将一组主机("hosts")映射到定义明确的角色。声明性用于指示 Ansible 如何设置或更改事物,Ansible 才进行必要的更改。

1.1. ansible 的使用范围自动化部署应用自动化管理配置自动化的持续交付自动化的云服务管理自动化网络设备管理1.2. Ansible 是怎么工作的

从上图可以看出,运行 ansible 的先决条件是,安装 ansible 到管理节点,定义主机清单,并有一些 playbooks 定义。

简要的步骤:

在控制节点上安装 ansible配置主机清单: 将被控节点的连接信息配置到主机清单中。定义 playbook: 指定运行主机和执行任务1.3. Ansible的特点ansible不需要单独安装客户端,也不需要启动任何服务ansible是python中的一套完整的自动化执行任务模块ansible playbook 采用yaml配置,对于自动化任务执行过一目了然1.4. Ansible组成结构Ansible:是 Ansible 的命令工具,核心执行工具;一次性或临时执行的操作都是通过该命令执行。 Ansible Playbook:任务剧本(又称任务集),编排定义 Ansible 任务集的配置文件,由 Ansible 顺序依次执行,`yaml` 格式。Inventory:Ansible管理主机的清单,默认是 /etc/ansible/hosts 文件。Modules:Ansible执行命令的功能模块,Ansible2.3 版本为止,共有1039个模块。还可以自定义模块。Plugins:插件,模块功能的补充,常有连接类型插件,循环插件,变量插件,过滤插件,插件功能用的较少。API:提供给第三方程序调用的应用程序编程接口。1.5. Ansible 与其它配置管理的对比2. Ansible 入门

跟着我,一步一步的开始 ansible 神奇之旅吧!

2.1. 环境信息control os: CentOS 7.5.1804ansible version: 2.9.272.2. 安装 Ansible

本次使用的是 Centos 7.5 x64 系统

sed -e 's!^#baseurl=!baseurl=!g' \       -e  's!^mirrorlist=!#mirrorlist=!g' \       -e 's!mirror.centos.org!mirrors.aliyun.com!g' \       -i  /etc/yum.repos.d/CentOS-Base.repoyum install -y epel-releasesed -e 's!^mirrorlist=!#mirrorlist=!g' \    -e 's!^metalink=!#metalink=!g' \    -e 's!^#baseurl=!baseurl=!g' \    -e 's!//download\.fedoraproject\.org/pub!//mirrors.aliyun.com!g' \    -e 's!\.aliyun!; \    -i /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel-testing.repoyum install -y ansible
2.3. 检测连通性
~]# ansible all -i 172.16.1.21,172.16.1.22 -uroot -k -m pingSSH password:172.16.1.21 | SUCCESS => {    "ansible_facts": {        "discovered_interpreter_python": "/usr/bin/python"    },    "changed": false,    "ping": "pong"}172.16.1.22 | SUCCESS => {    "ansible_facts": {        "discovered_interpreter_python": "/usr/bin/python"    },    "changed": false,    "ping": "pong"}

选项参数解释

all 在 Ansible 中,将其叫做 pattern,即匹配。通常称为资产选择器。就是匹配资产(-i 参数指定)中的一部分。这里的 all 是匹配所有指定的所有资产。将在下面资产部分详细阐述-i 指定 Ansible 的资产,也就是被管理的服务器,后面接的是一个列表(List)。因此当一个被管理节点的时候,我们一定要在后加一个英文逗号(,),告知 Ansible 是 List-u 指定连接用户-k 询问连接时的密码-m 指定要运行的模块

第一次远程连接报错

报错内容:"msg": "Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshpass does not support this. Please add this host's fingerprint to your known_hosts file to manage this host."

报错原因:从输出提示上基本可以了解到由于在本机的~/.ssh/known_hosts文件中并有fingerprint key串,ssh第一次连接的时候一般会提示输入yes 进行确认为将key字符串加入到 ~/.ssh/known_hosts 文件中

解决方法:

方法一:在本地先SSH登录一下对方设备,下次ansible 就可以正常操作了,但是比较麻烦

方法二:修改/etc/ansible/hosts设置参数为不检查key:host_key_checking = False

3.使用Ansible拷贝文件

在管理节点上,将文件 /tmp/a.conf 发布到所有被管理节点

~]# touch /tmp/a.conf~]# ansible all -i 172.16.1.21,172.16.1.22 -uroot -k -m copy -a "src=/tmp/a.conf dest=/tmp/a.conf"

选项参数解释

-a 指定模块的参数,这里模块 ping 没有指定参数。模块 copy 指定了 src 和 dest 参数

标签: #ansiblecentos7