Ansible安装及配置
ansible分为以下几个部份:
Ansible:核心引擎
Modules:包括 Ansible 自带的核心模块(core modules)及自定义模块 (custom modules);
核心模块:ansible模块资源分发到远程节点使其执行特定任务或匹配一个特定的状态。
自定义模块:如果核心模块不足以完成某种功能,可以添加自定义模块。
Plugins:完成模块功能的补充,包括连接插件、邮件插件等
Playbooks:网上很多翻译为剧本,个人觉得理解为编排更为合理;定义ansible任务的配置文件,可以将多个任务定义在一个剧本中,由ansible自动执行,剧本执行支持多个任务,可以由控制主机运行多个任务,同时对多台远程主机进行管理。
Inventory:定义 Ansible 管理主机的清单
ansible功能特性
应用代码自动化部署。
系统管理配置自动化。
支持持续交付自动化。
支持云计算、大数据平台(如AWS、OpenStack、VMWare等)环境。
轻量级,无需在客户端安装agent,更新时只需在控制机上进行一次更新即可。
批量任务执行可以写成脚本,不用分发到远程就可以执行。
使用Python编写,维护更简单,Ruby语法过于复杂。
支持非root用户管理操作,支持sudo。
可以按组分发、按机器名分发
python版本要在2.6以上
OS:(3台都一样)
[root@ansible-1 ~]# cat /etc/centos-release
CentOS release 6.8 (Final)
关闭selinux和防火墙:(3台都一样)
[root@ansible-1 ~]# vim /etc/selinux/config
SELINUX=disabled
[root@ansible-1 ~]# service iptables stop
安装Ansible:
一台控制主机:192.168.0.223
三台管理主机:
192.168.0.224
192.168.0.225
准备安装:
修改yum源、挂载光盘等......
控制主机端配置:
安装ansible前需要安装依赖包
[root@ansible-1 ~]# yum -y install epel-release
安装ansible:
[root@ansible-1 ~]# yum -y install ansible
配置机组:
[root@ansible-1 ~]# vim /etc/hosts #在最后插入以下内容
192.168.0.223 ansible-1 #服务端的主机名和IP
192.168.0.224 ansible-2 #客户端的主机名和IP
192.168.0.225 ansible-3 #客户端的主机名和IP
服务端ssh配置:
[root@ansible-1 ~]# /etc/ssh/sshd_config
Protocol 2
PasswordAuthentication no #去掉密码登录
PubkeyAuthentication yes #使用key登录
AuthorizedKeysFile .ssh/authorized_keys #这里的名字要记好,下面要用到
服务端生成自己的秘钥:(当前是哪个用户生成的就是这个用户的秘钥)
[root@ansible-1 ~]# ssh-keygen -t rsa
//按4次回车,每一次都不输入任何东西,如果在生成公钥的过程中有一次输入了密码什么的免秘钥配置就会失败。
查看自己的公钥和私钥:
[root@ansible-1 ~]# cd ~/.ssh
[root@ansible-1 .ssh]# ls
id_rsa id_rsa.pub
//id_rsa(私钥) id_rsa.pub(公钥)
[root@ansible-1 .ssh]# chmod 700 id_rsa
#重命名公钥,保持和/etc/ssh/sshd_config里的一致
[root@ansible-1 .ssh]# mv id_rsa.pub authorized_keys
[root@ansible-1 .ssh]# chmod 600 authorized_keys //!!!这一步是必须的
把自己的公钥copy到其他服务器上去:
############ 在发送之前客户端也要生成秘钥 ###############
[root@ansible-1 .ssh]# scp authorized_keys root@192.168.0.224:~/.ssh
[root@ansible-1 .ssh]# scp authorized_keys root@192.168.0.225:~/.ssh
第一次登录会提示输入密码:
[root@ansible-1 .ssh]# ssh ansible-2
The authenticity of host 'ansible-2 (192.168.0.224)' can't be established.
RSA key fingerprint is 61:2b:96:30:20:43:68:24:d8:ed:18:03:66:f5:c0:4a.
Are you sure you want to continue connecting (yes/no)? yes ###这里、这里、这里
Warning: Permanently added 'ansible-2' (RSA) to the list of known hosts.
Last login: Wed Nov 15 18:01:58 2017 from 192.168.0.49
第二次登录:
[root@ansible-1 .ssh]# ssh ansible-2
Last login: Wed Nov 15 22:56:11 2017 from ansible-1
修改ansible的hosts文件:
[root@ansible-1 .ssh]# cd
[root@ansible-1 ~]# vim /etc/ansible/ansible.cfg
inventory = /etc/ansible/hosts #指定默认hosts配置的位置
## ask_sudo_pass = True #不进行host_key检查,省去目标key发生变化时输入(yes/no)的步骤
## ask_pass = True # 每次执行ansible命令是否询问ssh密码
host_key_checking = False # 每次执行ansible命令时是否询问sudo密码
[root@ansible-1 ~]# vim /etc/ansible/hosts
[xycm]
192.168.0.224
192.168.0.225
注:将要管理的主机写进去,可以填写IP或主机名
[root@ansible-1 ~]# ansible all -m ping
192.168.0.224 | SUCCESS => {
"changed": false,
"ping": "pong"
}
192.168.0.225 | SUCCESS => {
"changed": false,
"ping": "pong"
}
常用模块介绍(module_name)
官方模块介绍地址:http://docs.ansible.com/ansible/latest/modules_by_category.html
1)command模块:远程主机上运行命令
command模块为ansible默认模块,不指定-m参数时,使用的就是command模块;
comand模块比较简单,常见的命令都可以使用,但其命令的执行不是通过shell执行的,所以,像这些 "<", ">", "|", and "&"操作都不可以,当然,也就不支持管道;
缺点:不支持管道,就没法批量执行命令
示例:
[root@ansible-1 ~]# ansible xycm -m command -a "ls /"
192.168.0.224 | SUCCESS | rc=0 >>
bin
boot
cgroup
dev
etc
home
lib
.......... 略一部分 ...........
192.168.0.225 | SUCCESS | rc=0 >>
bin
boot
cgroup
dev
etc
home
lib
.......... 略一部分 ...........
给远程主机添加用户,并设置密码:
[root@ansible-1 ~]# ansible xycm -a "useradd ansible-2"
192.168.0.224 | SUCCESS | rc=0 >>
192.168.0.225 | SUCCESS | rc=0 >>
设置密码:
[root@ansible-1 ~]# ansible xycm -a "echo weixiao | passwd --stdin ansible-2"
192.168.0.224 | SUCCESS | rc=0 >>
weixiao | passwd --stdin ansible-2
192.168.0.225 | SUCCESS | rc=0 >>
weixiao | passwd --stdin ansible-2
shell模块:
使用shell模块,在远程命令通过/bin/sh来执行;所以,我们在终端输入的各种命令方式,都可以使用;
但是我们自己定义在.bashrc/.bash_profile中的环境变量shell模块由于没有加载,所以无法识别;如果需要使用自定义的环境变量,就需要在最开始,执行加载自定义脚本的语句;
对shell模块的使用可以分成两块:
1) 如果待执行的语句少,可以直接写在一句话中:
[root@ansible-1 ~]# ansible xycm -a ". .bash_profile;ps -ef|grep crond" -m shell
2) 使用scripts模块可以在本地写一个脚本,在远程服务器上执行:
示例:
[root@ansible-1 /]# vim 123.sh
#!/bin/bash
echo "ni ye bu de yi wo hui xiao xiao de liqu"
[root@ansible-1 /]# ansible xycm -m script -a "/123.sh"
192.168.0.225 | SUCCESS => {
"changed": true,
"rc": 0,
"stderr": "Shared connection to 192.168.0.225 closed.\r\n",
"stdout": "ni ye bu de yi wo hui xiao xiao de liqu\r\n",
"stdout_lines": [
"ni ye bu de yi wo hui xiao xiao de liqu"
]
}
192.168.0.224 | SUCCESS => {
"changed": true,
"rc": 0,
"stderr": "Shared connection to 192.168.0.224 closed.\r\n",
"stdout": "ni ye bu de yi wo hui xiao xiao de liqu\r\n",
"stdout_lines": [
"ni ye bu de yi wo hui xiao xiao de liqu"
]
}
3) copy模块:把当前主机文件复制到远程主机位置,可以指定mode(权限)、own(所属主)、group(所属组)
[root@ansible-1 /]# ansible all -m copy -a "src=/123.sh dest=/ mode=644 owner=root group=root"
4)fetch模块:和copy相反,从远程主机拷贝文件到本地主机
[root@ansible-1 /]# ansible xycm -m fetch -a "src=/opop-1 dest=/mnt/kkkk/"
192.168.0.224 | SUCCESS => {
"changed": true,
"checksum": "da39a3ee5e6b4b0d3255bfef95601890afd80709",
"dest": "/mnt/kkkk/192.168.0.224/opop-1",
"md5sum": "d41d8cd98f00b204e9800998ecf8427e",
"remote_checksum": "da39a3ee5e6b4b0d3255bfef95601890afd80709",
"remote_md5sum": null
}
192.168.0.225 | SUCCESS => {
"changed": false,
"file": "/opop-1",
"msg": "the remote file does not exist, not transferring, ignored"
}
注:当dest=/kkkk/,abc.txt会保存在/kkkk/目录下
当dest=/kkkk,会拷贝abc.txt文件,并命名为kkkk
5)cron模块:在远程主机制定crontab周期性计划任务
minute= hour= day= month= weekday= job= name=(必须填写) state=
分 时 日 月 周 执行的命令 用户名
例如:
ansible all -m cron -a "minute=*/10 job='/sbin/ntpdate 10.10.10.10 &> /dev/null' name=Synctime"
在被管理的主机上使用crontab -l查看
[root@WebServer ~]# crontab -l
#Ansible: Synctime
*/10 * * * * /sbin/ntpdate 10.10.10.10 &> /dev/null
在管理(ansible)的主机上,可以删除制定的计划任务
[root@wlm ~] ansible all -m cron -a "state=absent name=Synctime"
### absent = 缺席 ###
Ansible安装及配置的更多相关文章
- 服务器批量管理软件ansible安装以及配置
1.yum安装(管理主机以及被管理主机都需要安装) yum install epel-release yum install ansible 2.配置管理主机 vim /etc/ansible/hos ...
- Ansible 安装与配置(一)
公司大概有200多云主机需要进行管理,但是如果通过手工管理费时还累最终结果也容易出错,所以考虑通过自动化的方式来管理云主机,目前开源的自动化工具,大家用的比较多的有Ansible和Saltstack这 ...
- 15.Ansible安装与配置简单版
Ansible是一个简单高效的自动化运维管理工具,用Python开发,能大批量管理N多台机器,可以并发的在多台机器上部署应用.安装软件.执行命令.配置和编排任务. 一.Ansible工作机制 从图中可 ...
- 1.Ansible安装以及配置
本节内容以Centos7为系统环境进行讲解: 1.安装epel源,方便直接yum安装: wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun ...
- ansible安装和配置
一.安装ansible准备 //安装准备 .两台机器 172.7.15.106 172.7.15.111 .设置hostname以及hosts 172.7.15.106 web9.lulu.com 1 ...
- ansible安装、配置ssh、hosts、测试连接
.安装ansible 1.1.源码安装 源码安装参照 https://www.cnblogs.com/guxiong/p/7218717.html [root@kube-node3 ~]# .tar. ...
- Ansible安装 入门教程
learn一门新技术咯: ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统配置 ...
- Ansible安装部署及常用模块详解
Ansible命令使用 Ansible语法使用ansible <pattern_goes_here> -m <module_name> -a <arguments> ...
- Ansible安装配置Nginx
一.思路 现在一台机器上编译安装好nginx.打包,然后在用ansible去下发 cd /etc/ansible 进入ansible配置文件目录 mkdir roles/{common,install ...
随机推荐
- Nginx + 阿里云SSL + tomcat 实现https访问代理
第一步:阿里云申请云盾证书服务 第二步:下载证书 第三步:修改Nginx配置 1. 证书文件214033834890360.pem,包含两段内容,请不要删除任何一段内容. 2. 如果是证书系统创建的C ...
- python之正则表达式及RE模块
正则表达式(匹配字符串)web界面正则匹配工具:http://tool.chinaz.com/regex/ 元字符 1 . 匹配除换行符之外的任意字符 2 \w 匹配数字字母下划线 3 \d 匹配数字 ...
- 解决ie7,ie8下a链接无效问题
.person a{ display: block; position: absolute; width: 109px; height: 33px; bottom: 19px; right: 40px ...
- 如今领占主导地位的19种AI技术!
如今领占主导地位的19种AI技术! http://blog.itpub.net/31542119/viewspace-2212797/ 深度学习的突破将人工智能带进全新阶段. 2006 年-2015 ...
- loadrunner 场景设计-手工场景设计
场景设计-手工场景设计 by:授客 QQ:1033553122 概述 通过选择需要运行的脚本,分配运行脚本的负载生成器,在脚本中分配Vuser来建立手工场景 手工场景就是自行设置虚拟用户的变化,主要是 ...
- 【Java入门提高篇】Day28 Java容器类详解(十)LinkedHashMap详解
今天来介绍一下容器类中的另一个哈希表———>LinkedHashMap.这是HashMap的关门弟子,直接继承了HashMap的衣钵,所以拥有HashMap的全部特性,并青出于蓝而胜于蓝,有着一 ...
- 使用spark DStream的foreachRDD时要注意哪些坑?
答案: 两个坑, 性能坑和线程坑 DStream是抽象类,它把连续的数据流拆成很多的小RDD数据块, 这叫做“微批次”, spark的流式处理, 都是“微批次处理”. DStream内部实现上有批次处 ...
- 【CSS基础】实现 div 里的内容垂直水平居中
方案一: 所有内容垂直水平居中 兼容性:IE8+. 条件:内容宽度和高度可以未知,可以是多行文字.图片.div. 描述:使用table-cell + vertical-align , html代码见文 ...
- [20180124]奇怪的SQL*Net message from dblink.txt
[20180124]奇怪的SQL*Net message from dblink.txt --//生产系统出现大量的SQL*Net message from dblink事件,自己分析看看. 1.环境 ...
- Linux Regulator Framework(2)_regulator driver
转自蜗窝科技:http://www.wowotech.net/pm_subsystem/regulator_driver.html 说实话,这篇好难懂啊... 1. 前言 本文从regulator d ...