tnblog
首页
视频
资源
登录

Ansible 安装与简介

8354人阅读 2021/3/15 13:52 总访问:3758341 评论:0 收藏:0 手机
分类: Ansible

ansible

Ansible 安装与简介

Ansible简介

Ansible是您安装在控制节点上的无代理自动化工具。Ansible从控制节点远程管理计算机和其他设备(默认情况下,通过SSH协议)。

Ansible安装

环境

rpm包安装

  1. # 在Master上安装ansible
  2. yum install ansible -y
  3. # 查看ansible的相关文件
  4. rpm -ql ansible

编译安装

  1. #下载到本地(当前最新版本ansible-2.9.13.tar.gz)
  2. wget -O ansible-2.9.13.tar.gz https://files.pythonhosted.org/packages/32/62/eec759cd8ac89a866df1aba91abf785486fed7774188a41f42f5c7326dcb/ansible-2.9.13.tar.gz
  3. #解压
  4. tar -xzvf ansible-2.9.13.tar.gz
  5. #进入更新目录
  6. cd ansible-2.9.13/
  7. #更新
  8. python setup.py install

相关文件

配置文件


/etc/ansible/ansible.cfg 主配置文件,配置ansible工作特性
/etc/ansible/hosts 主机清单
/etc/ansible/roles 存放角色的目录

程序应用文件


/usr/bin/ansible 主程序,临时命令执行工具
/usr/bin/ansible-doc 查看配置文档,模块功能查看工具
/usr/bin/ansible-galaxy 下载/上传优秀代码或Roles模块的官方平台
/usr/bin/ansible-playbook 定制自动化任务,编排剧本工具/usr/bin/ansible-pull远程执行命令的工具
/usr/bin/ansible-vault 文件加密工具
/usr/bin/ansible-console 基于Console界面与用户交互的执行工具

主机清单inventory


ansible的主要功用在与批量主机操作,为了便捷地使用其中的部分主机,可以在inventory file中将其分组命名
默认的inventory file为/etc/ansible/hosts
inventory file可以有多个,且也可以通过Dynamic Inventory来动态生成

运用ping模块进行测试


运用ping模块去ping子机

  1. # ansible 10.211.55.5 -m ping
  2. [WARNING]: No inventory was parsed, only implicit localhost is available
  3. [WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match
  4. 'all'
  5. [WARNING]: Could not match supplied host pattern, ignoring: 10.211.55.5


我们发现它在清单文件中并没有找到该IP,所以我们需要通过/etc/ansiblevim /etc/ansible/hosts命令去添加我们的IP地址,这里我们把2个子节点都添加上。然后再次尝试

  1. 10.211.55.5
  2. 10.211.55.6
  1. # ansible 10.211.55.5 -m ping
  2. The authenticity of host '10.211.55.5 (10.211.55.5)' can't be established.
  3. ECDSA key fingerprint is SHA256:zgJwK5DOvrR+/ntWGo5SgKXfoqFfyM5Y6ISCyGKmYwM.
  4. ECDSA key fingerprint is MD5:da:99:9f:63:09:3d:d3:b7:a1:80:f5:ca:d1:80:d6:7c.
  5. Are you sure you want to continue connecting (yes/no)? yes
  6. 10.211.55.5 | UNREACHABLE! => {
  7. "changed": false,
  8. "msg": "Failed to connect to the host via ssh: Warning: Permanently added '10.211.55.5' (ECDSA) to the list of known hosts.\r\nPermission denied (publickey,gssapi-keyex,gssapi-with-mic,password).",
  9. "unreachable": true
  10. }


显然我们可以直观的看到走的是SSH的方式,可是为什么还是报错呢?
因为你通过SSH的方式去走一般都需要输入密码所以加上-k参数可以按照常规方式执行模块

  1. # ansible 10.211.55.5 -m ping -k
  2. SSH password:
  3. 10.211.55.5 | FAILED! => {
  4. "msg": "to use the 'ssh' connection type with passwords, you must install the sshpass program"
  5. }


这样走是可以的,但我们还是要更具它的指示去安装对应sshpass软件,最后成功调用到了我们的模块

  1. # yum install sshpass -y
  2. ...
  3. # ansible 10.211.55.5 -m ping -k
  4. SSH password:
  5. 10.211.55.5 | SUCCESS => {
  6. "ansible_facts": {
  7. "discovered_interpreter_python": "/usr/bin/python"
  8. },
  9. "changed": false,
  10. "ping": "pong"
  11. }

运用ping模块进行多主机测试


我们继续来通过master主机对多个子机进行ping操作

  1. # ansible 10.211.55.5,10.211.55.6 -m ping -k
  2. SSH password:
  3. 10.211.55.6 | FAILED! => {
  4. "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."
  5. }
  6. 10.211.55.5 | SUCCESS => {
  7. "ansible_facts": {
  8. "discovered_interpreter_python": "/usr/bin/python"
  9. },
  10. "changed": false,
  11. "ping": "pong"
  12. }


我们发现它有三个问题:
1. 访问次序与我们预期的次序有所不同
2. 两台子机器密码一样却还是访问不了
3. 如果密码不一样不可能一条一条的输入密码吧

第一和第二个问题是因为本地没有10.211.55.6的ssh所以我们先单个访问在一同访问


bash # ssh 10.211.55.6 # exit # ansible 10.211.55.5,10.211.55.6 -m ping -k SSH password: 10.211.55.5 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python" }, "changed": false, "ping": "pong" } 10.211.55.6 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python" }, "changed": false, "ping": "pong" }


如果想对所有对的host主机进行执行ping模块可以直接通过all的方式进行执行

  1. # ansible all -m ping -k
  2. SSH password:
  3. 10.211.55.5 | SUCCESS => {
  4. "ansible_facts": {
  5. "discovered_interpreter_python": "/usr/bin/python"
  6. },
  7. "changed": false,
  8. "ping": "pong"
  9. }
  10. 10.211.55.6 | SUCCESS => {
  11. "ansible_facts": {
  12. "discovered_interpreter_python": "/usr/bin/python"
  13. },
  14. "changed": false,
  15. "ping": "pong"
  16. }

Host分组


inventory文件遵循INI文件风格,中括号中的字符为组名。可以将同一个主机同时归并到多个不同的组中;此外,当目标主机使用了非默认的SSH端口,还可以在主机名称之后使用冒号加端口号来标明.
接下来我们来举例(将ip分为两个组):

  1. # vim /etc/ansible/hosts
  2. [webserver]
  3. 10.211.55.5
  4. 10.211.55.6
  5. [dbserver]
  6. 10.211.55.5


我们也可以通过指定几到几到方式进行创建组(比如1-10,这里只有5与6所以我这里就写5-6的式例)

  1. # vim /etc/ansible/hosts
  2. [apiserver]
  3. 10.211.55.[5:6]


域名的方式同样可行,我这里的域名如下,如果我们需要配置子机可以按照如下配置

  1. # vim /etc/ansible/hosts
  2. [domainserver]
  3. rabbitmqslave[1:2]


如果端口号有细微的变动,比如ssh默认是22的,现在改成了2222,我们直接在后面添加2222端口就可以了

  1. # vim /etc/ansible/hosts
  2. [domainserver]
  3. rabbitmqslave[1:2]:2222


除了1-10数字可以写成[1:10]之外,a-f字母可以写成[a:f]

按组访问


我们可以通过如下命令按照我们创建的组进行访问(这里我们访问 webserver 组)

  1. # ansible webserver -m ping -k
  2. SSH password:
  3. 10.211.55.5 | SUCCESS => {
  4. "ansible_facts": {
  5. "discovered_interpreter_python": "/usr/bin/python"
  6. },
  7. "changed": false,
  8. "ping": "pong"
  9. }
  10. 10.211.55.6 | SUCCESS => {
  11. "ansible_facts": {
  12. "discovered_interpreter_python": "/usr/bin/python"
  13. },
  14. "changed": false,
  15. "ping": "pong"
  16. }

欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739

评价

如何升级到 Ansible 的最新版本

如何升级 Ansible 的版本[TOC] 访问 https://pypi.org/project/ansible/#files 找到 ansible-{版本}.tar.gz #下载到本...

如何解决 Ansible Galaxy SSL报错

如何解决 Ansible Galaxy SSL报错[TOC] 当我们下载插件的时候ansible-galaxy install geerlingguy.nginx,会报如下错误 ...

Ansible 使用和模块化深入解析

Ansible 使用和模块化深入解析[TOC] Ansible 主配置文件讲解 Ansible中的某些设置可以通过配置文件(ansible.cfg)进行调...

Ansible 常见企业级应用实战

Ansible 常见企业级应用实战[TOC] Fetch模块从客户端取文件至服务器端,与copy模块相反,我们可以通过ansible-doc -s fetch...

Ansible Playbook的用法

Ansible Playbook的用法[TOC] Ansible-galaxy它可以连接 https://galaxy.ansible.com 下载相应的roles 相关命令# 列出...

Ansible Playbook的用法(变量与template)

Ansible Playbook的用法(变量与template)[TOC] 使用变量变量名:仅能由字母、数字和下划线组成,且只能以字母开头。我们...

Ansible Role详解

Ansible Role详解[TOC] RolesRoles介绍ansible自1.2版本引入的新特性,用于层次性、结构化地组织playbook。roles能够根据...
这一世以无限游戏为使命!
排名
2
文章
665
粉丝
44
评论
93
docker中Sware集群与service
尘叶心繁 : 想学呀!我教你呀
一个bug让程序员走上法庭 索赔金额达400亿日元
叼着奶瓶逛酒吧 : 所以说做程序员也要懂点法律知识
.net core 塑形资源
剑轩 : 收藏收藏
映射AutoMapper
剑轩 : 好是好,这个对效率影响大不大哇,效率高不高
ASP.NET Core 服务注册生命周期
剑轩 : http://www.tnblog.net/aojiancc2/article/details/167
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术