Ansible安装配置及使用
一、Ansible特点
1、不需要安装客户端,通过sshd通信
2、基于模块工作,模块可以由任何序言开发
3、不仅支持命令行使用模块,也支持编写yaml格式的playbook
4、支持sudo
5、有提供UI(浏览器图形化)www.ansible.com/tower10台主机以内免费
6、开源UI https://github.com/alaxli/ansible_ui文档
http://download.csdn.net/detail/liyang23456/7741185
二、Ansible安装
两台机器10.10.10.201和10.10.10.156
只需要在10.10.10.201上安装ansible即可
# yum -y install epel-release
# yum -y install ansible
三、Ansible配置秘钥
在10.10.10.201生成秘钥对
# ssh-keygen -t rsa直接回车即可,不用设置秘钥密码
把公钥(id_rsa.pub)内容放到10.10.10.156的/root/.ssh/authorized_keys里面
# scp id_rsa.pub slave.fanisk.com:/root/.ssh/authorized_keys
本机也要操作
# chmod 600 /root/.ssh/authorized_keys
关闭selinux
三、Ansible远程执行命令
# ansible fansik -m command -a 'hostname'
fansik为主机组的名字,-m后边是模块的名字,-a后面是命令,也可以写一个ip,针对一台机器来执行命令
还有一个模块shell也同样可以实现(可以执行脚本,支持管道符):
# ansible fansik -m shell -a 'hostname'
如果出现错误(copy文件的时候就会出现了):
slave.fansik.com | FAILED! => {
"changed": false,
"checksum": "7267a346473f1d39c1e8c2c0b43d40a42c37eb28",
"failed": true,
"msg": "Aborting, target uses selinux but python bindings (libselinux-python) aren't installed!"
需要安装libselinux-python包:
# yum -y install libselinux-python
编辑ansible的配置文件,添加主机组
# vim /etc/ansible/hosts
[fansik]
127.0.0.1
slave.fansik.com
fansik为主机组名字,自定义,下面为组内的机器可以是ip也可以是主机名
四、Ansible拷贝文件或目录
# ansible slave.fansik.com -m copy -a "src=/tmp/wohenhao dest=/tmp/wobuhao owner=root group=root mode=0644"
注意:源目录会放到目标目录下面去,如果目标制定的目录不存在,它会自动创建,如果copy的是文件,dest指定得名字和源如果不同,并且它不是已经存在的目录,相当于copy过去后有重命名,但相反,若果dest是目标机器上已经存在的目录,则会直接把文件copy到该目录下面
# ansible fansik -m copy -a "src=/etc/passwd dest=/tmp/wobuhao"
这里的/tmp/wobuhao和源机器上的/etc/passwd是一直的,如果目标机器上已经存在/tmp/wobuhao目录,则会在/tmp/wobuhao目录下面建立passwd文件
五、Ansible远程执行脚本
远程执行脚本需要将脚本分发到各个机器上去
# ansible fansik -m copy -a "src=/tmp/test.sh dest=/tmp/test.sh mode=0755"
然后在批量执行脚本
# ansible fansik -m shell -a "/tmp/test.sh"
五、Ansible实现任务计划
创建任务计划
# ansible fansik -m cron -a "name='fanjinbao' job='/bin/touch /tmp/shishi.txt' minute=5 weekday=6"
删除任务计划
# ansible fansik -m cron -a "name='fanjinbao' state=absent"
其他的时间表示:分钟:minute,小时:hour,日期:day,月:month
五、Ansible实现任务计划
# ansible fansik -m yum -a "name=httpd"
在name后面还可以加上state=installed
# ansible fansik -m service -a "name=httpd state=started enabled=yes"
这里的name是centos系统里面的服务名,可以通过chkconfig --list查到
Ansible文档的使用
# ansible-doc -l 列出所有的模块
# ansible-doc service 查看指定模块的文档
六、Ansible playbook的使用
1、在/tmp/目录下创建playbook.txt文件
# vim /etc/ansible/test.yml
---
- hosts: fansik
remote_user: root
tasks:
- name: test_playbook
shell: touch /tmp/playbook.txt
说明:host参数指定了对哪些主机进行操作;
user参数指定了使用什么用户登录远程主机操作;
tasks指定了一个任务,其下面的name参数同样是任务的描述,在执行过程中会打印出来
执行:# ansible-playbook test.yml
2、创建test用户
---
- name: create_user
hosts: slave.fansik.com
user: root
gather_facts: false
vars:
- user: "test"
tasks:
- name: create user
user: name="{{ user }}"
说明:name参数对该playbook实现的功能做一个概述,后面执行过程中,会打印name变量的值,可以省略,gather facts参数指定了在以下任务部分执行前,是否先执行setup模块获取主机相关信息,这在后面的task会使用到setup获取的信息时用到;vars参数,指定了变量,这里指定一个user变量,其值为test,需要注意的是,变量值一定要用引号引住;user指定了调用user模块,name是user模块里的一个参数,而增加的用户名字调用了上面user变量的值。
七、Ansible playbook中的循环
改变slave.fansik.com的/tmp/目录下的1.txt、2.txt、3.txt的权限为600
# vim loop.yml
---
- hosts: slave.fansik.com
user: root
tasks:
- name: change mode for files
file: path=/tmp/{{ item }} mode=600 owner=root group=root
with_items:
- 1.txt
- 2.txt
- 3.txt
八、Ansible playbook条件判断
如果fansik主机组中有10.10.10.201这个机器就在该机器的/tmp/下面创建when.txt
---
- hosts: fansik
user: root
gather_facts: True
tasks:
- name: use when
shell: touch /tmp/when.txt
when: facter_ipaddress == "10.10.10.201"
九、Ansible playbook中的handers
执行tasks之后,服务器发生变化之后执行的一些操作,比如我们修改了配置文件后,需要重启一下服务
---
- hosts: fansik
remote_user: root
tasks:
- name: test copy
copy: src=/etc/passwd dest=/tmp/2.txt
notify: test handlers
handlers:
- name: test handlers
shell: echo "121212" >> /tmp/2.txt
说明:只有copy模块真正执行后,才会去调用下面的handlers相关的操作。也就是说passwd和2.txt内容是一样,并不会去执行handlers里面的shell相关命令命令,这种比较适合配置文件发生改变后,重启服务等操作。
Ansible安装配置及使用的更多相关文章
- Ansible安装配置及命令使用详解
Ansible和saltstack目前市面上一些其它的项目管理工具有很大的不同,它的设计初衷就是为了更方便.快捷的进行配置管理.它易于安装和使用.语法也非常简单易学.你可以用Ansible将平常复杂的 ...
- Ansible安装配置Nginx
一.思路 现在一台机器上编译安装好nginx.打包,然后在用ansible去下发 cd /etc/ansible 进入ansible配置文件目录 mkdir roles/{common,install ...
- Ansible安装配置
Ansible工具的安装与配置 Ansible基于SSH,不需要在远程端安装任何软件,只需要在管理端安装ansible及其组件即可. Ansible使用前提是已配置ssh密钥免登陆. 一.安装组件: ...
- 1、Ansible安装配置
ansible介绍: Ansible是一款基于Python开发的自动化运维工具,主要是实现批量系统配置.批量程序部署.批量运行命令.批量执行任务等等诸多功能.Ansible是一款灵活的开源工具,能够很 ...
- ansible安装配置及最佳实践roles
ansible是什么? ansible是一款轻量级配置管理工具,用于远程批量部署.安装.配置.类似的还有puppet.saltstack,各有所长,任君自选. 官方文档:http://docs.ans ...
- ansible安装配置zabbix客户端
安装软件 ansible host -m apt -a "name=zabbix-agent state=present" ansible host -m shell -a ...
- (一)ansible 安装配置
CentOS 7.5 一,安装 yum -y install ansible 二,配置hosts文件 /etc/ansible/hosts s1 ansible_ssh_port= ansible_s ...
- ansible安装配置及基本用法
ansiblle具有如下特点: 1.部署简单,只需在主控端部署Ansible环境,被控端无需做任何操作: 2.默认使用SSH协议对设备进行管理: 3.主从集中化管理: 4.配置简单.功能强大.扩展性强 ...
- 使用ansible安装配置zabbix客户端
ansible角色简介: 目录名 说明 defaults 默认变量存放目录 handlers 处理程序(当发生改变时需要执行的操作) meta 角色依赖关系处理 tasks 具体执行的任务操作定义 t ...
随机推荐
- 【STL】- vector的用法
初始化: 1. 默认构造: vector<int> vint; 2. 用包含10个元素的数组初始化: vector<int> vint(ia, ia+10); 算法: 1. v ...
- [微软]technet与msdn
我们搜索一个微软术语,有时定位到technet页面,有时定位到msdn页面.我直观的理解就是technet教人们如何使用微软产品,而msdn指导人们如何开发基于微软产品的软件.那么微软对它们具体定位是 ...
- 在T-SQL中访问远程数据库(openrowset、opendatasource、openquery)
1. 启用Ad Hoc Distributed Queries 在使用openrowset/opendatasource前要先启用Ad Hoc Distributed Queries服务,因为这个服 ...
- iOS多线程之NSThread使用
iOS中的多线程技术 我们在iOS开发项目过程中,为了解决UI界面操作不被耗时操作阻塞,我们会使用到多线程技术.在iOS开发中,我们主要会用到三种多线程操作技术:NSThread,NSOperatio ...
- Javascript基础--成员函数(六)
成员函数:也叫方法 1.常用方法 比如:我们希望对象不但有属性,还希望他有行为.(行为在程序中要靠函数来体现)(1) 添加speak函数,输出我是一个好人 (2) 添加jisuan函数,可以计算从1+ ...
- mine layer(2008 World Final C)
类似于扫雷游戏,在一些格子中散布着一些地雷,具体的埋藏位置并不清楚,但知道每个格子及其周围八个格子的地雷总数.请问此时正中间那一行最多可能有多少地雷(题目假定所有的输入都是奇数行的)? 输入: 第一行 ...
- Android IPC(inter-process Communitcation)
Android IPC(inter-process Communitcation) http://www.cnblogs.com/imlucky/archive/2013/08/08/3246013. ...
- leetcode 239 Sliding Window Maximum
这题是典型的堆排序算法,只是比一般的堆算法多了删除的操作,有两件事需要做: 1 用一个hash表存储从输入数组索引到堆数组(用于实现堆的那个数组)所以的映射,以便在需要删除一个元素的时候能迅速定位到堆 ...
- php大力力 [009节]php在百度文库的几个基础教程
2015-08-23 php大力力009. php在百度文库的几个基础教程 php大力力 [009节]php在百度文库的几个基础教程 PHP脚本中操作MySQL数据库3-猿代码平台 php基础教程-绝 ...
- 黑马程序员——【Java基础】——面向对象(二)异常机制、包(Package)
---------- android培训.java培训.期待与您交流! ---------- 一.异常机制 (一)异常概述 1.异常:就是程序在运行时出现不正常情况. 2.异常类:程序在运行时,出现的 ...