ansible基本介绍与应用
来源:互联网 发布:生意参谋怎么看数据 编辑:程序博客网 时间:2024/06/05 15:00
一、ansible基本介绍
1、ansible的优点
(1) ansible糅合了众多老牌运维工具的优点,基本上pubbet和saltstack能实现的功能全部能实现
(2)ansibel 不需要客户端,不需要客户端有一个非常大的优势,就是可以无缝接入现有的架构.ansible不需要在客户端做任何操作,就可以直接使用。
(3)ansible是一个工具,ansible不需要启动服务,仅仅只是一个工具,可以轻松的实现分布式扩展
(4)ansible是一致性,高可靠性,安全性设计的轻量级自动化工具
2、 ansible的基本架构
(1)连接插件(connectior plugins) 用于连接主机 用来连接被管理端
(2)核心模块(core modules) 连接主机实现操作, 它依赖于具体的模块来做具体的事情
(3)自定义模块(custom modules) 根据自己的需求编写具体的模块
(4)插件(plugins) 完成模块功能的补充
(5)playbooks(剧本) ansible的配置文件,将多个任务定义在剧本中,由ansible自动执行
(6)host inventory(主机清单)定义ansible需要操作主机的范围
最重要的一点是 ansible是模块化的 它所有的操作都依赖于模块
3、架构图
二、ansible的安装
- ansible只是一个进程 不需要添加数据库也不需要启动和运行守护进程它只是一个进程你可以轻松使用它安装在任何一点主机上面(除了windows)ansible管理机不能安装到windows上面
- 版本的选择 因为2.0有非常大的改进 一般都会使用2.0以上的版本
- 控制机的要求 因为ansible是python写的 所以需要在安装了python2.6或者2.7以上的python版本才可以安装
- 管理节点的要求 需要安装ssh python版本在2.5以上
- 安装有3个方式
1、安装ansible
(1) wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
(下载yum源)
yum -y install ansible
(安装ansible)
(2)pip install ansible
(3) 从github下载
$ git clone git://github.com/ansible/ansible.git --recursive $ cd ./ansible $ make rpm $ sudo rpm -Uvh ./rpm-build/ansible-*.noarch.rpm
2、ansible配置文件配置ansible.cfg
ansible配置文件 ansible.cfg
cd /etc/ansible #跳转到ansible目录下vim ansible.cfg #修改ansible的配置文件
(1) inventory–这个参数表示资源清单inventory文件配置,资源清单就是一些ansible需要链接管理的主机列表。安装完ansible之后默认所在的inventory列表配置如下:
inventory = /etc/ansible/hosts
(2) library–Ansible的操作动作,无论是本地或远程,都使用一小段代码来执行。这小段代码成为模块,这个library参数就是只想存放在Ansible模块的目录。Ansible支持多个目录方式,只要用冒号(:)隔开就可以,同时也会检查当前执行playbook位置下的./library位置。默认的配置如下:
library = /usr/share/ansible
(3) forks–设置默认情况下Ansible最多能有多少个进程同时工作,默认设置最多5个进程并行处理。具体需要设置多少个,可以根据控制主机的性能和被管理节点的数量来确定。默认参数配置如下: forks=20 你没有优化的优化的情况下执行比较慢
forks = 5
(4)sudo_user–这个设置默认执行命令的用户,在playbook中重新设置这个参数。默认参数配置如下:
sudo_user = root
(5)remote_port–这个是指定链接被管节点的管理端口,默认22。除非设置了特殊的SSH端口,不然这个参数一般是不需要修改的。默认配置如下:
remote_port = 22
(6)host_key_checking–这个设置是否检查SSH主机的秘钥。可以设置为True或者False。默认配置如下:
host_key_checking = false
(7)timeout–这是设置SSH链接的超时间隔,单位是秒。默认配置实例如下:
timeout = 60
(8)log_path–Ansible系统默认是不记录日志的,如果想把Ansible系统的输出记录到日志文件中,需要设置log_path来指定一个存储Ansible日志的文件。配置实例如下:
log_path = /var/log/ansible.log
(9)poll_interval 异步执行任务的时候多久检查一次任务装填
poll_interval = 15
(10)选择远程的工具 默认情况下就是smart(智能)模式 自动选择连接方式
只有当你需要优化执行速度的时候才需要修改这个选项
transport = smart
(11)module_set_locale 设置本地的环境变量
inventory = /etc/ansible/hosts
这个是默认库文件位置,脚本,或者存放可通信主机的目录
(12)Ansible默认搜寻模块的位置
library = /usr/share/my_modules/
配置成功时如下图:
三、ansible.cfg配置文件详解
查看配置文件设置 官方文档链接
四、配置Linux主机SSH无密码登录
1、生成秘钥
ssh-keygen -t rsa (在主机和其他Linux设备上生成秘钥)出现提示一直按回车键即可
2、将主机秘钥拷贝至其他Linux设备上
(1)192.168.1.106为我所需要无密登录的Linux机器,执行后会提示输入所需无密登录设备的密码,输入即可。 -P22 22为192.168.1.106机器的端口号
scp -P22 /root/.ssh/id_rsa.pub root@192.168.1.106:/root/.ssh/id_rsa.pub.32
(2)#拷贝到目标机器以,在目标机器执行下面代码
cd ~/.ssh/ #跳转到秘钥目录下cat id_rsa.pub.32 >> ~/.ssh/authorized_keys #将文件内容追加到authorized_keys文件中
(3)最后在主机实验是否成功
[root@vagrant-centos65 .ssh]# ssh -p22 192.168.1.106Last login: Sun Jul 16 13:46:00 2017 from 192.168.1.100
如果显示上述信息表示无密码登录设置成功。
如果在连接过程中有报错,请修改ssh的配置文件,然后重新启动ssh
vim /etc/ssh/sshd_configGSSAPICleanupCredentials yes #将此行前的注释给去掉
五. ansible执行
1、测试主机连通性,修改主机和配置
vim /etc/ansible/hosts
在文件最下方添加需要连接的Linux设备,例如我们刚才所实验的192.168.1.106
[ceshi]192.168.1.106
这提供另一种无密登录模式
[ceshi]192.168.1.106 ansible_ssh_pass='123456' #通过在hosts文件中设定也可达到无密登录模式
2、批量执行命令
如果返回以下代码表示连接成功
[root@vagrant-centos65 ansible]# ansible all -m shell -a 'echo hello ansible'192.168.1.106 | SUCCESS | rc=0 >>hello ansible
3、帮助
学习一个软件最重要的2个东西
1、第一个帮助文档
2、第二个官方文档
ansible-doc -hansible-doc -l例如:ansible-doc -s yum #会返回ansible命令中yum的用法查看详细信息 -v -vvv 有助于我们排错官方文档 http:\\docs.ansible.com
python接口的调用帮助文档 需要进python去看
python环境下
import ansiblefrom ansible.runner import Runnerfrom ansible.playbook import PlayBookhelp(ansible.runner)help(ansible.playbook)
六、ansible组件
6.1 ansible inventory
所有的机器信息都存放到ansible的inventory组件里面,默认ansible的inventory是一个静态的ini格式的文件/etc/ansible/hosts 。
当然还可以通过ANSIBLE_HOSTS环境变量指定或者运行ansible和ansible-playbook的时候用-i参数临时设置。
(1) 定义主机和主机组
[docker] #定义了一组叫docker172.16.1.11 #组下面的主机172.11.11.11 # 此ansible_ssh_pass='123456'[docker:vars] #针对docker组使用inventroy内置变量定义了ssh登陆密码ansible_ssh_pass='123456' #此为变量[ansible:children]#定义了一个ansible组 下面包含一个docker组
(2)多个inventory列表
配置支持多个inventory
首先需要修改ansible.cfg中hosts的定义改成一个目录比如 hostfile = /data/inventory,然后我们在目录里面放入多个hosts文件
[root@ceshi2 data]# tree inventoryinventory├── docker└── hosts不同的文件可以存放不同的主机:cat inventory/hosts172.16.4.11 ansible_ssh_pass='123456'cat inventory/docker172.11.11.11 ansible_ssh_pass='654321' #以此来分组
(3) 动态Inventory
动态inventory的意思是所有的变量可以从外部获取,也就是说我们可以从CMDB以及zabbix系统拉取所有的主机信息然后使用ansible进行管理。引用inventory只需要把ansible.cfg文件中的inventory定义值改成一个执行脚本即可。
6.2 ansible Ad-Hoc命令
ad-hoc是点对点的执行ansible命令,介绍一下日常的Ad-Hoc命令:
ansible docker -m shell -a 'hostname' -o -o的意思是异步执行ansible docker -B 120 -P 0 -m shell -a 'sleep 10;hostname' -o #加了-P 0 之后会返回一个job_id 可以通过jobID去查看执行的结果ansible 172.17.42.101 -m async_status -a 'jid='5265654654''当-P 大于0的时候会轮询去查询执行结果
其他的一些常用的命令我会在以后的例子后面的内容中进行补充
6.3 ansible playbook
playbook是一个剧本,当我们ansible日常命令ad-hoc命令功能完成不了时,就需要playbook来实现了
在实际工作过程中我们大部分的时间都在编写playbook 会在下一篇博客中进行演示。
6.4 ansible facts CMDB
facts是ansible用于采集被管机器设备信息的一个功能,我们可以使用setup模块差机器的所有的facts信息
ansible 172.17.1.1 -m setup
收集到信息后可以直接在后面YAML脚本中引用
6.5 role
role是对我们日常使用的playbook的目录结构进行规范化,会在下一篇博客中进行演示
6.6 ansible Galaxy
这个是官网的分享role的功能平台,可以自己去下载别人写好的role来使用网址是https://galaxy.ansible.com/list
- ansible基本介绍与应用
- Ansible 源码安装与基本使用
- Ansible 源码安装与基本使用
- ansible 介绍
- Ansible介绍
- ansible基本使用
- [App] Ansible 基本安装
- [App] Ansible 基本用法
- Ansible基础介绍汇总
- Ansible的介绍
- ansible命令介绍
- Ansible Playbook 介绍
- Ansible常用模块介绍
- Ansible常用模块介绍
- Ansible基础元素介绍
- ansible应用总结
- ajax 基本应用-详细介绍
- Ansible基本部署&&常用模块
- ThreadPoolExecutor使用和思考(上)-线程池大小设置与BlockingQueue的三种实现区别
- 编程题
- python在IDLE中输入多行
- hadoop hdfs 常用命令大全
- 2017四川省赛 L.Nice Trick【Dp+逆元】
- ansible基本介绍与应用
- Java 8系列之重新认识HashMap
- JavaScript基础总结
- [leetcode]507. Perfect Number
- Cocos2d-x 之简单 UI 及事件
- 深入浅出JMS(一)--JMS基本概念
- arm底层通讯接口之uart
- 关于HTTP协议,一篇就够了
- React setState(多次调用setState真的会影响性能吗?)