博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
X Chen笔记---Centos安装使用Ansible
阅读量:2395 次
发布时间:2019-05-10

本文共 2359 字,大约阅读时间需要 7 分钟。

参考链接:https://blog.csdn.net/xyang81/article/details/51568227

https://blog.csdn.net/caroljy/article/details/79743721

http://www.mamicode.com/info-detail-1428476.html

ansible中文手册:http://www.ansible.com.cn/docs/playbooks_conditionals.html#when

 

 

一、Ansible工作机制

ansible架构图

从图中可以看出ansible分为以下几个部份:

1> Control Node:控制机器 

2> Inventory:主机清单,配置管理主机列表 
3> Playbooks:剧本、任务编排。根据规则定义多个任务,模块组织结构清晰,由ansible自动执行。 
4> Modules(Core | Custom):模块,用于执行某个具体的任务 
5> connection plugin(连接插件):Ansible通过不同的协议连接到远程主机上,执行指定的命令。默认采用ssh协议连接远程主机。

二、Ansible执行流程

Ansible执行流程 

简单理解就是Ansible在运行时,首先读取ansible.cfg中的配置,根据规则获取Inventory中的管理主机列表,并行的在这些主机中执行配置的任务,最后等待执行返回的结果。

三、安装Ansible

一台控制主机:192.168.0.202

三台管理主机:

  • 192.168.0.200
  • 192.168.0.201
  • 192.168.0.203

安装要求:

  • 控制服务器:需要安装 Python2.6/2.7
  • 管理服务器:需要安装 Python2.4 以上版本,若低于 Python2.5 需要安装 pythonsimplejson; 若启用了 selinux,则需要安装 libselinux-python。

本次安装基于CentOS7系统环境、Python2.7.5、root用户。

3.1、yum安装(推荐)

yum install epel-releaseyum install ansible

如果提示错误 Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again

只需修改文件“/etc/yum.repos.d/epel.repo”, 将baseurl的注释取消, mirrorlist注释掉即可

  • 1
  • 2

3.2、pip安装

pip install ansible
  • 1

注:pip方式安装不会在/etc/ansible目录下生成默认的相关配置文件

四、配置

控制主机:用于控制其它机器的主机 

管理主机:被控制主机管理的主机

4.1、配置管理主机

vim /etc/ansible/hosts
  • 1

在hosts文件中添加管理主机的IP地址列表:

配置管理主机

4.2、配置控制主机SSH密钥

4.2.1、在控制主机中生成ssh密钥对

ssh-keygen -t rsa
  • 1

一路回车即可在$HOME/.ssh目录下生成id_rsa和id_rsa.put私钥和公钥两个文件。

注: 如果在生成密钥的时候设置了密码,ansible每次执行命令的时候,都会提示输入密钥密码,可通过下面的命令记住密码。

ssh-agent bshssh-add ~/.ssh/id_rsa
  • 1
  • 2

4.2.2、将公钥拷贝到管理主机中.ssh/authorized_keys文件中,实现免密码登录远程管理主机

ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.0.200ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.0.201ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.0.203
  • 1
  • 2
  • 3

注:ssh-copy-id命令会自动将id_rsa.pub文件的内容追加到远程主机root用户下.ssh/authorized_keys文件中。

4.2.3、ansible配置

vim /etc/ansible/ansible.cfg
  • 1

1> 禁用每次执行ansbile命令检查ssh key host 

host_key_checking = False

2> 开启日志记录 

log_path = /var/log/ansible.log

3> ansible连接加速配置

[accelerate]#accelerate_port = 5099accelerate_port = 10000 #accelerate_timeout = 30#accelerate_connect_timeout = 5.0# If set to yes, accelerate_multi_key will allow multiple# private keys to be uploaded to it, though each user must# have access to the system via SSH to add a new key. The default# is "no".accelerate_multi_key = yes
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

五、测试

最后测试下在三台管理机器批量执行一个ping命令

ansible all -m ping
  • 1

结果如下:

ansible all -m ping运行结果

从上图可以看出,在每台管理机器上都成功执行了ping命令。

 

 

你可能感兴趣的文章
人工智能资料库:第3辑(20170107)
查看>>
人工智能资料库:第22辑(20170131)
查看>>
人工智能资料库:第23辑(20170201)
查看>>
MongoDB-初体验
查看>>
TensorFlow中四种-Cross-Entropy-算法实现和应用
查看>>
不可不知的python陷阱
查看>>
进程管理工具--supervisor
查看>>
使用virtualenv在ubuntu上搭建python-3开发环境
查看>>
详解-Python-的-“==”-和-“is”
查看>>
Tensorflow-Python-API-翻译(array_ops)
查看>>
Tensorflow-Python-API-翻译(constant_op)
查看>>
Tensorflow-Python-API-翻译(framework)
查看>>
Tensorflow-Python-API-翻译(math_ops)(第二部分)
查看>>
Tensorflow-Python-API-翻译(math_ops)(第一部分)
查看>>
论文阅读---An-Artificial-Neural-Network-based-Stock-Trading-System-Using-T
查看>>
A-Paper-A-Day--#1-Convolutional-Sequence-to-Sequence-Learning
查看>>
7个很棒的-chatbot-应用场景
查看>>
标记问题:词性标注(POS)和命名实体识别(NER)
查看>>
标记问题:介绍
查看>>
标记问题:生成模型和噪声通道模型
查看>>