一ansible简介和安装

Posted 哭泣的馒头

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一ansible简介和安装相关的知识,希望对你有一定的参考价值。

一、概述

​​1、概述

ansible是2013年推出的一款IT自动化和DevOps软件,2015年被RedHat收购,是基于Python研发,糅合很多老运维工具的优点,实现批量操作系统配置,批量程序部署,批量运行命令等功能

​ansible可以实现:

(1). 可以实现批量系统操作配置  

(2). 可以实现批量软件服务部署

(3). 可以实现批量文件数据分发

(4). 可以实现批量系统信息收集

--自动化部署APP

--自动化管理配置项

--自动化持续交付

--自动化(AWS)云服务管理

2、ansible优点:

--只需要SSH和Python即可使用

--无刻画段

--ansible功能强大,模块丰富

--上手容易,门栏低

--基于Python开发,做二次开发更容易

--使用公司较多,社区活跃

3、软件依赖关系

(1).对管理主机

-要求Python2.6或Python2.7

ansible使用以下模块,都需要安装

-Paramiko

-PyYAML

-jinja2

-httplib2

-sik

(2).对于被托管主机

-ansible默认通过SSH协议管理机器

-被管理主机要开启ssh服务,允许ansible主机登录

-在托管主机要开启ssh服务

-在托管节点也要安装Python2.5或以上的版本

-如果托管节点开启了SElinux,需要安装libselinux-python

4、ansible执行原理

ansible执行命令时,通过其底层传输连接模块,将一个或数个文件,或者定义一个play或command命令传输到远程服务器/tmp目录的临时文件,并在远程执行这些play/command命令,然后删除这些临时文件,同时回传整个命令执行结果。

ansible底层基于安全可靠的SSH通讯协议

二、安装配置

​​1、配置yum源(192.168.10.129)

​wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

安装ansible

yum install -y ansible

\'一、ansible简介和安装_ansible\'

2、ansible配置文件

ansible配置文件查找路径

-首先检查ANSIBLE_CONFIG变量定义的配置文件

-其次检查当前目录下的./ansible.cfg文件

-再次检查当前用户目录下的~/ansible.cfg文件

-最后检查/etc/ansible/ansible.cfg文件

​----------------------------------------------------------------------------------------------------

/etc/ansible/ansible.cfg是ansible的默认配置文件路径

#inventory      = /etc/ansible/hosts      #主机列表配置文件

#library        = /usr/share/my_modules/  #库文件存放目录

#remote_tmp     = ~/.ansible/tmp          #临时py文件存放在远程主机目录

#local_tmp      = ~/.ansible/tmp          #本地的临时执行目录

#forks          = 5                       #默认并发数                                          

#sudo_user      = root                    #默认sudo用户

#ask_sudo_pass = True                     #每次执行是否询问sudo的ssh密码

#ask_pass      = True                     #每次执行是否询问ssh密码

#remote_port    = 22                      #远程主机端口号

​----------------------------------------------------------------------------------------------------

ansible配置文件:

inventory 定义托管主机地址配置文件路径名

inventory 指定的配置文件,写入远程主机的地址

host_key_checking = False ##跳过检查主机指纹这个最好设置为False 

##SSH远程主机交互是否需要确认 True (等待输入yes)、False(不需要输入yes)

3、主机配置文件

​vi /etc/ansible/hosts

[webserver]

192.168.10.128

192.168.10.130

​额外几种配置方式

(1)范围配置

[webserver]

node[3:4]

(2)包含配置

[cluster:children]

database

webserver

(3)组配置参数

[webserver:vars]

ansible_ssh_pass=\'123456\'

4、ansible基础命令

ansible 主机集合 -m 模块名称 -a 参数名称

--主机集合 主机名或分组名,多个使用逗号分隔

-m 模块名称,如果没有指明,则默认使用command模块

-a 或者 --args 模块参数

其他参数

-i inventory文件路径,或可执行脚本

-k 使用交互方式登录密码

-e 定义变量

-v 显示详细信息

5、ansible免密远程管理的几种方式

(1)非免密登录

ansible 192.168.10.130 -m ping -k ###使用交互方式密码登录

\'一、ansible简介和安装_ansible_02\'

(2)配置主机清单配置文件

直接 /etc/ansible/hosts配置

​​[webserver]

​192.168.10.128 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=\'123456\'

192.168.10.130 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=\'123456\'

\'一、ansible简介和安装_ansible_03\'

\'一、ansible简介和安装_ansible_04\'

或者组配置参数

[webserver]

192.168.10.128

192.168.10.130

[webserver:vars]

ansible_ssh_port=22 ##默认ssh端口号,如果做了修改,必须单独配置

ansible_ssh_user=root ###默认的ssh的用户名

ansible_ssh_pass=\'123456\'

\'一、ansible简介和安装_ansible_05\'

或者单独写一个主机清单文件

vi /tmp/hosts

​​[webserver]

​192.168.10.128

192.168.10.130

[webserver:vars]

ansible_ssh_port=22

ansible_ssh_user=root

ansible_ssh_pass=\'123456\'

ansible webserver -m ping -i /tmp/hosts ##-i指定主机清单的位置

\'一、ansible简介和安装_ansible_06\'

(3)设置密钥对,免密登录

直接ssh-keygen一路回车

然后ssh-copy-id root@192.168.10.128、ssh-copy-id root@192.168.10.130实现免密

另一种方式不使用默认的密钥

​cd /root/.ssh

​ssh-keygen -t rsa -b 2048 -N \'\' -f key

这样子生成的密钥对名称是 key key.pub

给所有主机部署密钥(必须在/root/.ssh目录下,不然找不到key.pub)

ssh-copy-id -i key.pub root@192.168.10.128

ssh-copy-id -i key.pub root@192.168.10.130

由于此时不是使用的默认的密钥名称

需要在主机清单添加配置

[webserver:vars]

ansible_ssh_private_key_file="/root/.ssh/key"

以上是关于一ansible简介和安装的主要内容,如果未能解决你的问题,请参考以下文章

原创运维基础之Ansible简介安装和使用

Ansible简介

三ansible-playbook简介编写语法检测

inotify用法简介及结合rsync实现主机间的文件实时同步

ansible入门讲解

ansible入门讲解