Ansible 快速安装配置,常用模块
Ansible是一个轻量级的工具,基于python语言实现,通过python中的paramiko来连接并管理机器, 功能强大(YAML,PlayBook,模块化功能),不需要安装客户端,
通过ssh连接,推送命令到客户端,只有服务器端,就可以批量管理。
#安装 ,仅供Centos6系列系统
软件包链接:https://pan.baidu.com/s/1v8B6sCzm2BO8XO9ufgMu_w 密码:ifnb
下载后通过rpm安装即可,如有依赖包问题,yum那个依赖包
安装完毕后通过ansible --version 检查是否安装成功
#下面介绍我在工作中的常用用法,一下均在实际环境中实现,由于实际环境,需要管理的机器很多,所以,通常情况下,机器的端口,用户名,密码等都是一样的。
首先,建立一个文件,文件中存储你想管理的主机,主机端口,主机用户名,密码等等,ansible依赖这个文件,进行批量管理动作,我这边的文件如下。
[jenkins@host-10-124-198-75 shell]$ cat yatai_all
10.124.193.76 ansible_ssh_port=22 ansible_ssh_user=admin ansible_ssh_pass=abc ansible_sudo_pass=abc
10.124.165.76 ansible_ssh_port=22 ansible_ssh_user=admin ansible_ssh_pass=abc ansible_sudo_pass=abc
10.124.193.81 ansible_ssh_port=22 ansible_ssh_user=admin ansible_ssh_pass=abc ansible_sudo_pass=abc
10.124.165.75 ansible_ssh_port=22 ansible_ssh_user=admin ansible_ssh_pass=abc ansible_sudo_pass=abc
10.124.194.185 ansible_ssh_port=22 ansible_ssh_user=admin ansible_ssh_pass=abc ansible_sudo_pass=abc
10.124.165.77 ansible_ssh_port=22 ansible_ssh_user=admin ansible_ssh_pass=abc ansible_sudo_pass=abc
10.124.193.77 ansible_ssh_port=22 ansible_ssh_user=admin ansible_ssh_pass=abc ansible_sudo_pass=abc
10.124.163.170 ansible_ssh_port=22 ansible_ssh_user=admin ansible_ssh_pass=abc ansible_sudo_pass=abc
10.124.194.3 ansible_ssh_port=22 ansible_ssh_user=admin ansible_ssh_pass=abc ansible_sudo_pass=abc
10.124.165.74 ansible_ssh_port=22 ansible_ssh_user=admin ansible_ssh_pass=abc ansible_sudo_pass=abc
10.124.194.187 ansible_ssh_port=22 ansible_ssh_user=admin ansible_ssh_pass=abc ansible_sudo_pass=abc
10.124.165.78 ansible_ssh_port=22 ansible_ssh_user=admin ansible_ssh_pass=abc ansible_sudo_pass=abc
10.124.165.73 ansible_ssh_port=22 ansible_ssh_user=admin ansible_ssh_pass=abc ansible_sudo_pass=abc
10.124.193.82 ansible_ssh_port=22 ansible_ssh_user=admin ansible_ssh_pass=abc ansible_sudo_pass=abc
10.124.193.78 ansible_ssh_port=22 ansible_ssh_user=admin ansible_ssh_pass=abc ansible_sudo_pass=abc
10.124.198.32 ansible_ssh_port=22 ansible_ssh_user=admin ansible_ssh_pass=abc ansible_sudo_pass=abc
10.124.194.2 ansible_ssh_port=22 ansible_ssh_user=admin ansible_ssh_pass=abc ansible_sudo_pass=abc
10.124.198.21 ansible_ssh_port=22 ansible_ssh_user=admin ansible_ssh_pass=abc ansible_sudo_pass=abc
10.124.198.31 ansible_ssh_port=22 ansible_ssh_user=admin ansible_ssh_pass=abc ansible_sudo_pass=abc
10.124.198.18 ansible_ssh_port=22 ansible_ssh_user=admin ansible_ssh_pass=abc ansible_sudo_pass=abc
10.124.198.10 ansible_ssh_port=22 ansible_ssh_user=admin ansible_ssh_pass=abc ansible_sudo_pass=abc
10.124.198.16 ansible_ssh_port=22 ansible_ssh_user=admin ansible_ssh_pass=abc ansible_sudo_pass=abc
10.124.198.126 ansible_ssh_port=22 ansible_ssh_user=admin ansible_ssh_pass=abc ansible_sudo_pass=abc
10.124.198.13 ansible_ssh_port=22 ansible_ssh_user=admin ansible_ssh_pass=abc ansible_sudo_pass=abc
#上方的配置横向解释依次是ip,port,user,passwd,sudo_passwd 相信看得懂
#我这有个简单的脚本,根据你的机器来生成端口,密码等信息,并创建这个主机信息文件,如果你懒得写,你可以直接复制过去,你只需要在脚本同级目录新建一个命名为ip的文件,里面每行1个ip地址即可,调整下脚本内容,指定连接的用户,密码等
#!/bin/bash
port='ansible_ssh_port=22'
user='ansible_ssh_user='admin''
passwd='ansible_ssh_pass='abc''
sudo_passwd='ansible_sudo_pass='abc'
new_hosts_filename='new_ip'
function run (){
for i in `cat ip`;
do
echo "$i $port $user $passwd $sudo_passwd " >> $new_hosts_filename
done }
cat $new_hosts_filename &> /dev/null
if [ $? != "" ] ; then
run
else
echo "file $new_hosts_filename already exists please check"
fi
ansible提供了默认的机器信息文件,但是里面是空的,只标注了一些配置介绍,有兴趣你也可以去看看。
/etc/ansible/hosts
下面开始执行命令,从简单开始。
#此命令是使用ping模块,对-i yatai_all文件里面all,所有机器,执行ping测试。
-i 指定hosts文件,就是上面创建的主机ip与密码对应的文件,直接执行,不用输入连接机器的密码,因为我在文件中已经定义过了,高效率就是这么来的。
ansible -i yatai_all all -m ping
#有人第一次执行ansible命令的时候会报错,就算你在你的hosts文件中设置了主机ip,密码,端口等,这些都正确,也会报错,可能是因为第一次连接linux服务器是出现的交互式hostkey_check搞的鬼,如下,ansible默认可不会帮你输入yes or no ,你可以通过下方方式来解决:
永久跳过次检查,在/etc/ansible/ansiblt.cfg文件中配置如下参数。
host_key_checking = False
通过ansible在主机中批量执行命令
ansible -i yatai_all all -m shell -a 'echo $USER'
#在yatai_all文件中指定的所有主机上执行命令“echo $USER”
使用shell模块,-a后面跟上被控机需要执行的命令
#在工作环境中,root用户权限一般是不能直接使用的,避免因权限太高导致的不可挽回的后果,所以我们应该尽量使用其他用户,那么,如果真有需要在多台机器上使用root用户执行的命令时怎么办呢(首先,你需要用root用户,在 /etc/sudoers文件中添加配置,允许用户进行提权,我使用的是admin用户,那么我用root用户在文件中放入admin ALL=(ALL:ALL) ALL )
首先,通过ansible使用root用户批量增加其他用户的sudo权限。#此时你的主机信息文件里面,对应的用户要改为root,以及root的密码。如下,或者使用上面脚本重新生成主机配置
(10.124.198.16 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=abc ansible_sudo_pass=abc )
ansible -i yatai_all all -m shell -a 'echo “admin ALL=(ALL) ALL” '
使用sudo提权执行命令
#yatai_all文件中给每台机器都定义了一个选项:ansible_sudo_pass=abc,作用就是定义sudo时输入的密码(如果不想定义ansible_sudo_pass选项,也可以通过交互式页面手动输入密码,执行时附带参数【-k】即可 )
提权操作很简单,只需要在你的用户已经有提权的权限时,加一个-s参数即可,让我们看看结果
ansible -i yatai_all all -m shell -a 'echo $USER' -s
加和不加-s的图中结果明显不同,-s选项加上后,使用的是root用户执行的命令。
ansible copy文件,操作也很简单,命令如下。
以下命令,是将本机的/etc/file1文件,copy到所有主机的/etc/下命名file2,copy时,还可以设置文件权限等(需将参数加到命令引号内)。
ansible -i yatai_all all -m copy -a 'src=/etc/file1 dest=/etc/file2'
命令中的src=/etc/file1 如果替换为 content='abcabc', 代表将content中的内容放到对端主机的/etc/file2文件中,切,shell -a 'echo "abcabc" > /etc/file2 ' 也可以实现
force 参数,如果对端机器上已经有/etc/file2了,是否覆盖,设置值force={no,yes},默认yes
mode 参数,当你希望文件在对端机器的权限是777时,你需要设置mode=0777,当你需要给属组增加执行权限时,mode=g+x
Ansible 快速安装配置,常用模块的更多相关文章
- CentOS6.9快速安装配置svn
CentOS6.9快速安装配置svn 环境介绍: 操作系统:CentOS release 6.9 (Final)192.168.65.130 (svn服务器)192.168.65.129 (svn客户 ...
- ANSIBLE安装和常用模块模块使用详细教程
目录 ANSIBLE安装和各种模块应用功能 安装配置ANSIBLE ANSIBLE使用 ansible-galaxy工具 ansible-pull工具 ansible-playbook ansible ...
- Ansible安装及常用模块
配置文件:/etc/ansible/ansible.cfg 主机列表:/etc/ansible/hosts 安装anslibe wget -O /etc/yum.repos.d/epel.repo ...
- ansible环境部署及常用模块总结 - 运维笔记
一. Ansible 介绍Ansible是一个配置管理系统configuration management system, python 语言是运维人员必须会的语言, ansible 是一个基于py ...
- 10.Python之Ansible自动化运维常用模块
Ansible中文权威文档:http://www.ansible.com.cn/docs/ Ansible从入门到精通:https://www.bilibili.com/video/av3361175 ...
- ansible简介安装配置
ansible简介 ansible是一款,自动化运维管理工具.顾名思义是用于批量去管理及安装服务及批量管理主机. ansible与saltstack对比 ansible优点:配置简单,部署容易除主管理 ...
- ansible 的安装及常见模块使用
ansible 基础keys的ssh协议配置的 特性:幂等性:一个任务执行1遍和执行n遍效果一样. ansible是个管理软件不是服务,不需要长期运行 一.通过epel源安装ansible, 1.下 ...
- CentOS7Linux中自动化运维工具Ansible的安装,以及通过模块批量管理多台主机
使用自动化运维工具Ansible集中化管理服务器 Ansible概述 Ansible是一款为类Unix系统开发的自由开源的配置和自动化工具.它用Python写成,类似于saltstack和Puppet ...
- Saltstack 安装与常用模块
一.介绍 saltstack是基于C/S服务模式,在该架构中,服务器端叫做Master,客户端叫做Minion.传统的C/S模式我们这样理解,客户端发送请求给服务器端,服务器端接受到来自客户端的请求并 ...
随机推荐
- PostMan 中使用Datas 文件一次Run 只能使用一个
PostMan 一次run 只能有一个文件. Note that you can only use one data file for one run.
- kubernetes资源配置之ReplicaSets
什么是ReplicaSets? ReplicaSet的目的是维护在任何给定时间运行的稳定的副本Pod集. 因此,它通常用于保证指定数量的相同Pod的可用性 ReplicaSets怎么样工作? Repl ...
- python面向编程:类继承、继承案例、单继承下属性查找、super方法
一.类的继承 二.基于继承解决类与类的代码冗余问题 三.在单继承背景下属性的查找 四.super的方法 一.类的继承 1.什么是继承? 在程序中继承是一种新建子类的方法的方式,新创建的类成为子类\派生 ...
- Jmeter (二) 参数化
一.数据 用户 参数化 1.添加 用户参数 添加——>前置处理器 ——>用户参数 2.设置 目标参数 3.变量代替 ${name} 4.线程组 设置循环次数,查看结果数中查看结果 thre ...
- java开发技巧
1,IDEA辅助功能Shift +F2去到有错误的地方Alt+Enter,会给出解决错误的建议: 2,调试,没问题的步骤,直接跳过,不要跳入细节: 调试时,要明确要跟踪的变量,不要陷入混乱: 3,调试 ...
- socket 测试工具java
SocketTest.jar http://sockettest.sourceforge.net/
- 小程序swiper组件的bindchange方法重复执行问题
这是官方文档的说法给出了swiper组件一直来回滑动的bug原因 以下是修正方法 <swiper autoplay="{{autoplay}}" interval=" ...
- 一篇文章让您了解MQTT
转载:https://www.jianshu.com/p/de88edf8e023 什么是MQTT MQTT是基于二进制消息的发布/订阅编程模式的消息协议,最早由IBM提出的,如今已经成为OASI ...
- cnblogs设置各级标题样式和目录
向博客园申请js权限 我们需要进入博客园自定义博客模板的页面,向博客园管理团队申请页面运行js的权限. [博客园]->[设置]->[博客设置],点击页面上的js权限申请,然后填写申请的理由 ...
- Python入门-2编程基本概念:03引用的本质-栈内存和堆内存-内存示意图
引用 在Python中,变量也称为:对象的引用.因为,变量存储的就是对象的地址. 变量通过地址引用了“对象”. 变量位于:栈内存(压栈出栈等细节,后续再介绍). 对象位于:堆内存. Python是动态 ...