一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
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 ###使用交互方式密码登录
(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\'
或者组配置参数
[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\'
或者单独写一个主机清单文件
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指定主机清单的位置
(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简介和安装的主要内容,如果未能解决你的问题,请参考以下文章