一、初识Ansible

介绍:

  Absible 使用 模块(Modules)来定义配置任务。模块可以用标准脚本语言(Python,Bash,Ruby,等等)编写,这是一个很好的做法,使每个模块幂等。Ansible剧本(YAML语言编写)角色映射到 节点/虚拟机上,以对这些节点/虚拟机 进行编排有序的执行。Ansible支持ad-hoc任务:管理任务(不必幂等)以在多个节点/虚拟机上执行。Ansible具有无代理架构:你不需要在配置的节点/虚拟机上安装Ansible(然而,这些节点必须安装python环境),Ansible 通过SSH或者通过PowerShell(Windows机器)从单个控制机器上配置管理节点/虚拟机,并且能够支持并行配置多个节点。Ansible 可以用来配置 类unix系统或 Windows节点/虚拟机。

基本特点:

  • 安装部署简单,支持多种方式安装(yum,git等)
  • 支持分类过滤管理主机
  • 轻量级,被管理端无需安装特定agent(需有python、ssh环境)
  • 模块众多,可以满足我们的需要
  • 开发社区活跃
  • Ansible playbook 剧本
  • 支持各种公有云、私有云平台
  • 基于Push推送方式,可以随时修改
  • 幂等性(已经存在的修改后的状态,再次执行这个任务时,不会进行任何修改)

如图:

  注:上图是从官方介绍视频中的截图。用户通过ansible 自动化引擎, 使用playbook ,插件、模块去去管理被控制主机。并可以结合CMDB管理系统。

二、Ansible运行环境

1.ansible的安装支持多种方式。

官方建议:

  • 如果你想在Red Hat Enterprise Linux (TM), CentOS, Fedora, Debian, or Ubuntu上,运行最新版本的Ansible版本,推荐使用包管理器,如yum,apt-get.
  • 对于其它安装选项,推荐使用pip 包管理器进行安装
  • 如果想要使用最新的功能可以跟踪开发版本,从github上进行git到本地,进行使用

2.控制机要求:

  Ansible 可以运行在有python 2.6或者2。7环境的类unix 环境。windows 暂不支持

3.被控制节点要求

  控制节点需要和 Ansible 被控制节点通信,通常使用ssh 进行连接。另外也需要python环境。

三、Ansible 安装

1.控制管理机安装(安装方式有多种,源码,pip等方式),我们这里使用git 源码安装方式进行部署

[root@docker ~]# git clone git://github.com/ansible/ansible.git --recursive
[root@docker ~]# cd ansible/

进行源码安装

[root@docker ansible]# make && make install

先安装pip包管理工具,然后安装ansible 程序所使用的几个python模块

[root@docker ansible]# easy_install pip
[root@docker ansible]# pip install paramiko PyYAML Jinja2 httplib2 six

更新ansible 代码时用到的两条命令

[root@docker ansible]# git pull --rebase
Current branch devel is up to date.
[root@docker ansible]# git submodule update --init --recursive

2.检查验证
作者:飞走不可,原文链接:http://www.cnblogs.com/hanyifeng/p/6110926.html

[root@docker ansible]# ansible --version
ansible 2.3.
config file =
configured module search path = Default w/o overrides

三、配置Ansible 尝试下管理主机

1.默认配置文件在你git下载源码的目录ansible目录中

/root/ansible/bin/ansible

2.创建hosts存放目录,并编写hosts文件

[root@docker ansible]# mkdir -pv /etc/ansible/
mkdir: created directory '/etc/ansible/'

从安装文件中,拷贝hosts

[root@docker ansible]# cp /root/ansible/examples/hosts /etc/ansible/.

编写hosts文件,添加1个主机

3.创建俩docker 容器吧

[root@docker ~]# docker run -d -it --name centos- centos_sshd_1
b032a6c8b4014837181029059661104373db8a6190a1f854ae5ff701b961a546
[root@docker ~]# docker run -d -it --name centos- centos_sshd_1
cc647f916437df70b54096bcf676804114d1558124234b7716aee68271414f27

容器创建完,默认已经启动了sshd 服务开启22端口(这里可以查看后续我发的Docker 自定义镜像的文章),我们查看下它们的ip

[root@docker ~]# docker exec centos- hostname -I
172.17.0.2
[root@docker ~]# docker exec centos- hostname -I
172.17.0.3

4.将上面2个被控制主机的ip 添加到 hosts 文件中,并进行通信测试

打开/etc/ansible/hosts文件,在末尾按照以下格式添加。

[cenots_group]
172.17.0.2
172.17.0.3

添加完成后,在控制主机上使用 ping 模块进行测试,如下:(约定:被控主机称为client,控制主机称为managent,以下类似)

  所有主机:

[root@docker ~]# ansible '*' -m ping --ask-pass
SSH password:
172.17.0.3 | SUCCESS => {
"changed": false,
"ping": "pong"
}
172.17.0.2 | SUCCESS => {
"changed": false,
"ping": "pong"
}

  指定组的方式:

[root@docker ~]# ansible centos_group -m ping --ask-pass
SSH password:
172.17.0.2 | SUCCESS => {
"changed": false,
"ping": "pong"
}
172.17.0.3 | SUCCESS => {
"changed": false,
"ping": "pong"
}

  指定单个主机的方式:

[root@docker ~]# ansible '172.17.0.3' -m ping --ask-pass
SSH password:
172.17.0.3 | SUCCESS => {
"changed": false,
"ping": "pong"
}

解释:ansible 命令后面,跟的第一个参数,也就是我们hosts 文件里面的主机清单(可以指定单个主机ip,也可以是组,也支持正则匹配); 第二个参数是使用-m 指定模块,这里我们用了 ping模块。 --ask-pass 这个是当我们使用主机密码来进行ssh认证时的参数,多次输入后,会感觉比较麻烦。推荐使用密钥的方式,安全又方便。下面说下如何用公钥

5.使用密钥来进行ssh 远程访问

先在management 上生成公钥私钥对

[root@docker ~]# ssh-keygen -t rsa -C "management"

将公钥放到使用 ssh-copy-id命令,上传到client 上面去。

[root@docker ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.17.0.2

[root@docker ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.17.0.3

现在再试下管理命令,不用输入密码了

[root@docker ~]# ansible centos_group -a "/bin/echo Hello world"
172.17.0.3 | SUCCESS | rc= >>
Hello world 172.17.0.2 | SUCCESS | rc= >>
Hello world

ok,等下一次学习Inventory(资源清单)时,再来分享吧。

注:ansible是第二次开始写的连载系列文章,如果喜欢可以关注哦。如果感觉有不好的地方,一定要不吝赐教哈。我会非常非常感激的。另外,如果你觉得本文对你有帮助,欢迎转载,但务必要注明出处啊。

作者:飞走不可,原文链接:自动化运维工具之Ansible 介绍以及安装http://www.cnblogs.com/hanyifeng/p/6110926.html

参考链接:

http://docs.ansible.com/

自动化运维工具之 Ansible 介绍及安装使用的更多相关文章

  1. 自动化运维工具之ansible

    自动化运维工具之ansible   一,ansible简介 ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fab ...

  2. 自动化运维工具:ansible

    自动化运维工具:ansible Ansible(1):简介和基本概念 Ansible(2):安装配置 Ansible(3):ansible资源清单管理 Ansible(4):常用模块

  3. Linux实战教学笔记25:自动化运维工具之ansible (一)

    第二十五节 ansible之文件的批量分发 标签(空格分隔): Linux实战教学笔记-陈思齐 ---本教学笔记是本人学习和工作生涯中的摘记整理而成,此为初稿(尚有诸多不完善之处),为原创作品,允许转 ...

  4. 自动化运维工具之SaltStack简介与安装

    1.SaltStack简介 官方网址:http://www.saltstack.com官方文档:http://docs.saltstack.comGitHub:https:github.com/sal ...

  5. 自动化运维工具之ansible(转)

    原文链接:http://os.51cto.com/art/201409/451927_all.htm

  6. 自动化运维工具Ansible介绍

    一个由 Python 编写的强大的配置管理解决方案.尽管市面上已经有很多可供选择的配置管理解决方案,但他们各有优劣,而 ansible 的特点就在于它的简洁. 让 ansible 在主流的配置管理系统 ...

  7. 自动化运维工具Ansible详细部署 (转载)

    自动化运维工具Ansible详细部署 标签:ansible 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://sofar.blog. ...

  8. 自动化运维工具——ansible详解(一)

    ansible 简介 ansible 是什么? ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.chef.func.fabric)的优点,实现了批量系统 ...

  9. 项目实战10.1—企业级自动化运维工具应用实战-ansible

    实战环境: 公司计划在年底做一次大型市场促销活动,全面冲刺下交易额,为明年的上市做准备.公司要求各业务组对年底大促做准备,运维部要求所有业务容量进行三倍的扩容,并搭建出多套环境可以共开发和测试人员做测 ...

随机推荐

  1. 阿里云产品介绍(二):云服务器ECS的孪生兄弟们

    上一篇介绍的云服务器ECS,是阿里云最基础的产品,也是每一个云计算厂商最基础的产品,俗称爆款.除了标准的云服务器,阿里云也不停的在推出面向特殊业务场地的云服务器,可以说是ECS的孪生兄弟们. 这一篇就 ...

  2. Docker实践(4)—network namespace与veth pair

    network namespace 创建network namespace # ip netns add blue # ip netns list blue   添加网口到namespace 先创建v ...

  3. 图解 MongoDB 地理位置索引的实现原理

    地理位置索引支持是MongoDB的一大亮点,这也是全球最流行的LBS服务foursquare 选择MongoDB的原因之一.我们知道,通常的数据库索引结构是B+ Tree,如何将地理位置转化为可建立B ...

  4. 解决adb shell input text 中文输入,unicode转utf-8

    https://github.com/senzhk/ADBKeyBoard 上面这个是外国人写的一个输入法,我们把它安装再设置下就ok了 直接下载bin下的ADBKeyBoard.apk文件,或者上面 ...

  5. 奇怪吸引子---TreeScrollUnifiedChaoticSystem

    奇怪吸引子是混沌学的重要组成理论,用于演化过程的终极状态,具有如下特征:终极性.稳定性.吸引性.吸引子是一个数学概念,描写运动的收敛类型.它是指这样的一个集合,当时间趋于无穷大时,在任何一个有界集上出 ...

  6. CDH的几个包的下载地址

    https://archive.cloudera.com/cdh5/parcels/5.3.0/ http://archive.cloudera.com/cm5/installer/5.3.0/ ht ...

  7. 修改nginx服务器类型

    通常nginx服务器不隐藏服务器类型及版本信息  curl -I http://www.aaa.com    获取web服务器的类型和版本代码   HTTP/1.1 200 OK   Server: ...

  8. 安装与配置 Elasticsearch

    环境:centos6.7 #查询已经安装的JDK rpm -qa | grep jdk #卸载 yum -y remove  java-1.8.0-openjdk-headless-1.8.0.91- ...

  9. ffrpc相关文章列表

    ffrpc 是异步c++通信库.可以说是传统rpc模式和zeromq模式的一个结合,采用broker模式封装client和server之间的拓扑关系,而client和server的通信仍然按照请求应答 ...

  10. [转]pycharm 2016 注册码

    pycharm 2016 注册码 复制 43B4A73YYJ-eyJsaWNlbnNlSWQiOiI0M0I0QTczWVlKIiwibGljZW5zZWVOYW1lIjoibGFuIHl1IiwiY ...