Ansible简介

ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。

ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括:

(1)、连接插件connection plugins:负责和被监控端实现通信;

(2)、host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;

(3)、各种模块核心模块、command模块、自定义模块;

(4)、借助于插件完成记录日志邮件等功能;

(5)、playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。

简而言之ansible有如下的特点:

(一)批量管理工具

(二)模块

(三)python

(四)无终端,是基于ssh实现管理的

(五)也支持主从模式

(六)也支持playbook

Ansible的安装

可以直接使用yum进行安装,前提是你已经配置了epel源

第一步:yum安装ansible

[root@ken ~]# yum install ansible -y

第二步:查看ansible的版本信息

可以看到我的安装版本是2.6.2的

[root@ken ~]# ansible --version
ansible 2.6.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, Apr 11 2018, 07:36:10) [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)]

第三步:查看ansible配置文件

我们接下来各个节点的管理主要是配置/etc/ansible/hosts文件

[root@ken ~]# rpm -qc ansible
/etc/ansible/ansible.cfg
/etc/ansible/hosts

Ansible使用基本配置

第一步:把需要管理的节点的IP地址加入到/etc/ansible/hosts文件中

在文件末行添加如下三行信息,第一行是定义了一个主机组,下面两行只要把需要管理的IP地址即可填写进去即可

[root@ken ~]# vim /etc/ansible/hosts
...
# Here's another example of host ranges, this time there are no
# leading 0s: ## db-[99:101]-node.example.com
##############在末行添加如下信息#################
[ken]
10.220.5.138
10.220.5.139

第二步:发送秘钥至被操控节点

ansible是基于sshd服务,所以如果我们需要管理其他节点的话,需要给各个节点发送秘钥

在主节点生成秘钥,发送至各个被监控节点

使用如下脚本即可进行批量安装

#!/bin/bash
. /etc/init.d/functions
#author:技术流ken
#date:2018.11.16
#desc:this script for ssh key
#下载expect
yum install expect -y &>/dev/null
if [ $? -eq 0 ];then
echo -n "download expect"
success
echo ""
else
echo -n "download expect"
failure
echo ""
exit 8
fi
#删除保存的秘钥信息
if [ -f id_rsa -o -f id_rsa.pub -o known_hosts ];then
rm -rf /root/.ssh/id*
rm -rf /root/.ssh/known*
fi
#自动生成秘钥对
/usr/bin/expect<<eof
spawn ssh-keygen
expect {
"(/root/.ssh/id_rsa)" {send \r;exp_continue}
"passphrase" {send \r;exp_continue}
"again" {send \r}
}
expect eof
exit
eof
#在各个节点分发秘钥
for i in 37 38 39
do
ken=10.220.5.1$i
/usr/bin/expect<<eof
spawn ssh-copy-id $ken
expect {
"yes/no" {send yes\r;exp_continue}
"password" {send o\r}
}
expect eof
exit
eof
done

Ansible使用基本格式

ansible使用格式

可以输入一个ansible回车即可看到使用格式

[root@ken ~]# ansible
Usage: ansible <host-pattern> [options]

ansible常用使用选型

你可以输入ansible回车看到很多的选型,这里选取几个比较常用的选项进行说明

-m:指定模块名称
-a:指定模块的具体参数
-s:以sudo的方式运行操作
-i:指定被管理节点的主机列表
-f:一批连接几个主机进行操作(默认是5个主机)

Ansible模块使用帮助

正如我们前文介绍的,ansible是基于模块来工作的,所以要想使用ansible,必须对ansible的模块有个清晰的认识。

查看模块

可以使用如下命令进行查看所支持的模块

[root@ken ~]# ansible-doc -l

获取模块使用帮助

使用-s指定获取shell模块的使用帮助

[root@ken ~]# ansible-doc -s shell
- name: Execute commands in nodes.
shell:
chdir: # cd into this directory before running the command
creates: # a filename, when it already exists, this step will *not* be run.
executable: # change the shell used to execute the command. Should be an absolute path to the executable.
free_form: # (required) The shell module takes a free form command to run, as a string. There's not an
actual option named "free form". See the examples!
removes: # a filename, when it does not exist, this step will *not* be run.
stdin: # Set the stdin of the command directly to the specified value.
warn: # if command warnings are on in ansible.cfg, do not warn about this particular line if set to
no/false.

Ansible管理节点的三种方法

还记得刚才在hosts文件添加的三行内容吗?

[ken]
10.220.5.138
10.220.5.139

在使用ansible的时候你可以指定主机组名,也可以指定一个IP,也可以用all来表示全部,因为你的配置文件里面可能不止一个主机组名,想要实现批量管理,就要用到了all.

所以这里有三种使用方法

(一)指定主机组名

通过如下的命令就可以获取到了整个主机组节点的信息

[root@ken ~]# ansible ken -m command -a "hostname"
10.220.5.138 | SUCCESS | rc=0 >>
ken 10.220.5.139 | SUCCESS | rc=0 >>
ken

(二)指定一个特定IP

指定ip 10.220.5.138获取特定节点的信息

[root@ken ~]# ansible 10.220.5.138 -m command -a "ip a"
10.220.5.138 | SUCCESS | rc=0 >>
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000
link/ether 00:0c:29:a9:90:16 brd ff:ff:ff:ff:ff:ff
inet 10.220.5.138/24 brd 10.220.5.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fea9:9016/64 scope link
valid_lft forever preferred_lft forever

(三)使用all

因为在配置文件里面我只定义了一个主机组,所以这里呈现的效果和使用ken是一样的,大家可以尝试定义多个主机组,再使用all.

[root@ken ~]# ansible all  -m command -a "ls /tmp"
10.220.5.138 | SUCCESS | rc=0 >>
ansible_TpWP26
hsperfdata_root
hsperfdata_zabbix
systemd-private-495d844cb6f24a5fa04192c973de9274-chronyd.service-SVap94
systemd-private-495d844cb6f24a5fa04192c973de9274-httpd.service-Grw0SF
systemd-private-79452c683402427e944cc4959183f774-httpd.service-DENLXJ
systemd-private-79452c683402427e944cc4959183f774-ntpd.service-cH4QGP
systemd-private-f0243ed42bf34679b61e0687522914f6-chronyd.service-DADZWt
systemd-private-f0243ed42bf34679b61e0687522914f6-httpd.service-lCPw92
vmware-root 10.220.5.139 | SUCCESS | rc=0 >>
ansible_bxGz8A
systemd-private-2e376cd91398450f85a81bc060207ef8-chronyd.service-TxdhUO
systemd-private-2e376cd91398450f85a81bc060207ef8-httpd.service-k8IZOZ
systemd-private-5c9f32d6cff64520b10075e086d943ab-chronyd.service-iAH3c0
systemd-private-5c9f32d6cff64520b10075e086d943ab-httpd.service-dsAqeg
systemd-private-65ded84926e64a90b0a201a805f752ca-chronyd.service-eSj3iR
systemd-private-6706ba5361284cd4a0c91f3c8b68c606-chronyd.service-sLgAei
systemd-private-6706ba5361284cd4a0c91f3c8b68c606-httpd.service-op5Yg7
vmware-root
yum_save_tx.2018-11-15.16-02.KHC9kd.yumtx

Ansible基础认识及安装(1)的更多相关文章

  1. Ansible基础认识及安装使用详解(week5_day1_part1)--技术流ken

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

  2. ansible 基础 简介及 安装

    ansible 运维自动化工具. 没有客户端,底层通信依赖于系统软件,linux下基于openssh,win基于powershell

  3. ansible基础-安装与配置

    一 安装 1.1 ansible架构 ansible是一个非常简单的自动化部署项目,由python编写并且开源.用于提供自动化云配置.配置文件管理.应用部署.服务编排和很多其他的IT自动化需求. an ...

  4. ansible基础☞安装方法

    一 需要安装些什么 Ansible默认通过 SSH 协议管理机器. 安装Ansible之后,不需要启动或运行一个后台进程,或是添加一个数据库.只要在一台电脑(可以是一台笔记本)上安装好,就可以通过这台 ...

  5. ansible基础-理解篇

    1. 介绍 要说现在的部署工具,ansible可以说家喻户晓了. ansible是一个开源软件,用于软件供应.配置管理.应用部署.ansible可以通过SSH.remote PowerShell.其他 ...

  6. ansible基础-playbooks

    1. playbooks介绍 如果说ansible的modules是工具,inventory配置文件是原材料,那么playbook就是一封说明书,这里会记录任务是如何如何执行的,当然如果你愿意,这里也 ...

  7. ansible基础-ansible角色的使用

    ansible基础-ansible角色的使用 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们建议把多个节点都会用到的功能将其定义模块,然后谁要用到该模块就直接调用即可!而在a ...

  8. ansible基础-playbook剧本的使用

    ansible基础-playbook剧本的使用 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.YAML概述 1>.YAML的诞生 YAML是一个可读性高,用来表达数据序 ...

  9. 003.Ansible基础使用

    一 Ansible命令用法 Ansible命令行执行方式有:Ad-Hoc.Ansible-playbook两种,Web方式其官方提供付费产品Tower.Ad-Hoc主要用于临时命令的执行,Ansibl ...

随机推荐

  1. 手把手教你在win10下搭建pytorch GPU环境(Anaconda+Pycharm)

    Anaconda指的是一个开源的Python发行版本,其主要优点如下: Anaconda默认安装了常见的科学计算包,用它搭建起Python环境后不用再费时费力安装这些包: Anaconda可以创建互相 ...

  2. 理解RESTful原理

    如何给老婆解释什么是RESTful 老婆经常喜欢翻看我订阅的技术杂志,她总能从她的视角提出很多有趣的问题. 一个悠闲的周日下午,她午觉醒来,又习惯性的抓起这个月的杂志,饶有兴趣地看了起来. 果不其然, ...

  3. JDBC API阐述

    JDBC API JDBC API 是一系列的接口,它使得应用程序能够进行数据库联接,执行SQL语句,并且得到返回结果. Driver 接口 Java.sql.Driver 接口是所有 JDBC 驱动 ...

  4. Spring Boot系列(四):Spring Boot源码解析

    一.自动装配原理 之前博文已经讲过,@SpringBootApplication继承了@EnableAutoConfiguration,该注解导入了AutoConfigurationImport Se ...

  5. 什么是RPC,RPC好处,常用的RPC框架

    RPC简介 RPC(Remote Procedure Call Protocol)远程过程调用协议.一个通俗的描述是:客户端在不知道调用细节的情况下,调用存在于远程计算机上的某个对象,就像调用本地应用 ...

  6. 第3篇 Scrum 冲刺博客

    1.站立会议 照骗 进度 成员 昨日完成任务 今日计划任务 遇到的困难 钟智锋 确定客户端和服务器通信的形式 重新设计项目执行流程 我的规划过于混乱,对应难以同步开发 庄诗楷 绘制棋盘 游戏窗口的制作 ...

  7. 第一篇Scrum冲刺博客

    目录 一.Alpha 阶段认领的任务 二.明日成员的任务安排 三.整个项目预期的任务量 四.敏捷开发前的感想 五.团队期望 一.Alpha 阶段认领的任务 陈起廷 任务 预计时间 日记天气.心情选择 ...

  8. Learning in Spiking Neural Networks by Reinforcement of Stochastic Synaptic Transmission

    郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! Summary 众所周知,化学突触传递是不可靠的过程,但是这种不可靠的函数仍然不清楚.在这里,我考虑这样一个假设,即大脑利用突触传递的随机 ...

  9. 区块链入门到实战(6)之区块链 – 哈希(Hash)

    密码学中,最重要的函数之一是哈希函数.哈希函数将任意大小的数据(内容)映射到固定大小的数据(哈希值). 哈希函数是单向的,从内容生成哈希值很容易,但从哈希值映射到内容很难. 比特币使用SHA-256哈 ...

  10. Java 将Html转为PDF

    本文介绍如何在Java程序中将html文件转换成PDF文件.转换时,需要注意以下两点: 一.需要使用转换插件 可根据不同的系统来下载对应的插件,下载地址:windows-x86.zip, window ...