ansible的安装

#
[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.5. (Core)
[root@localhost ~]# uname -r
3.10.-862.3..el7.x86_
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
[root@localhost ~]# systemctl stop NetworkManager
[root@localhost ~]# systemctl disable NetworkManager
#通过yum源方式安装ansible
[root@ansible ~]# yum -y install epel-release
[root@ansible ~]# yum -y install ansible
#通过Python的pip方式安装ansible
[root@ansible ~]# yum -y install epel-release
[root@ansible ~]# yum -y install python2-pip
[root@ansible ~]# pip install ansible

ssh的,安全策略

备份:cp /etc/ssh/sshd_config{,.bak}

[root@www ~]# cat -n /etc/ssh/sshd_config.bak | sed -n '17p;38p;43p;47p;65p;79p;115p'
#Port #修改ssh连接端口
#PermitRootLogin yes #是否允许root账号远程登陆
#PubkeyAuthentication yes #是否开启公钥连接认证
AuthorizedKeysFile .ssh/authorized_keys #公钥文件的放置位置
PasswordAuthentication yes #是否开启密码验证登陆
GSSAPIAuthentication yes #是否关闭GSSAPI认证
#UseDNS yes #是否关闭DNS反向解析
[root@www ~]# cat -n /etc/ssh/sshd_config | sed -n '17p;38p;43p;47p;65p;79p;115p'
Port #工作中需要设定到1万以上的端口,避免被扫描出来。
PermitRootLogin yes #如果不是超大规模的服务器,为了方便我们可以暂时开启root远程登录
PubkeyAuthentication yes #开启公钥认证模式
AuthorizedKeysFile .ssh/authorized_keys #公钥放置位置
PasswordAuthentication no #为了安全我们关闭服务器的密码认证方式
GSSAPIAuthentication no #关闭GSSAPI认证,极大提高ssh连接速度
UseDNS no #关闭DNS反向解析,极大提高ssh连接速度

然后配置主机清单

/etc/ansible/hosts文件中可以定义被管理主机,Ansible通过读取/etc/ansible/hosts文件内定义的主机清单批量做一些操作。比如定义一个nginx组,包含一台主机Web01,再定义一个apache组,包含另一台主机Web02.

[root@ansible ~]# cat /etc/ansible/hosts
[nginx]
Web01 ansible_ssh_host=192.168.200.184
Web02 ansible_ssh_host=192.168.200.185
说明:
ansible_ssh_host:被管理主机IP
ansible_ssh_user:被管理主机用户名
ansible_ssh_pass:被管理主机用户的登陆密码
ansible_sudo_pass:被管理主机用户sudo时的密码
 Ansible服务器简单的综合安全管理策略
#禁止非root用户查看Ansible管理服务器端/etc/hosts文件
[root@ansible ~]# ll /etc/hosts
-rw-r--r--. root root 月 : /etc/hosts
[root@ansible ~]# chmod /etc/hosts
#禁止非root用户查看Ansible的主机清单配置文件
[root@ansible ~]# ll /etc/ansible/hosts
-rw-r--r-- root root 月 : /etc/ansible/hosts
[root@ansible ~]# chmod /etc/ansible/hosts
[root@ansible ~]# /usr/local/python/bin/ansible-doc -l 查看总帮助
[root@ansible ~]# /usr/local/python/bin/ansible-doc -s shell 查看shell模块的帮助

ansible的十大基础模块

1.

ping模块
Ansible中使用ping模块来检测指定主机的连通性

2.

command模块
在远程主机执行命令,不支持管道符和重定向等复杂命令,可完全被shell模块替代 [root@ansible ~]# ansible Web01 -m command -a 'uptime'

3.

shell模块
Ansible中的shell模块可以在被管理主机上运行命令,并支持像管道符重定向这样的复杂命令。 #在Web01上创建用户yunjisuan,并非交互方式设定密码
[root@ansible ~]# ansible Web01 -m shell -a 'useradd yunjisuan'

4.

cron模块
Ansible中的cron模块用于定义任务计划。主要包括两种状态(state); crontab时间周期:
minute:分钟
hour:小时
day:日期
month:月份
weekday:周期
crontab任务:
job:指明运行的命令是什么
crontab任务描述:
name:定时任务描述(定时任务清除的依据)
state状态:
present:表示添加(省略状态时默认使用);
absent:表示移除;
crontab任务的用户身份:
user:指定定时任务以哪个用户身份执行
#添加定时任务计划,在所有被管理的主机里每十分钟输出hello字符串,定时任务描述为test cron job
[root@ansible ~]# ansible all -m cron -a 'minute="*/10" job="/bin/echo hello" name="test cron job"'

5.

 copy模块
Ansible中的copy模块用于实现文件复制和批量下发文件。其中使用src来定义本地源文件路径;使用dest定义被管理主机文件路径;使用content则是使用指定信息内容来生成目标文件。
ansible all -m copy -a 'src=/etc/hosts dest=/etc/hosts owner=root mode=640 backup=yes'

6

script模块
Ansible中的script模块可以将本地脚本复制到被管理主机的内存中并运行,不会在被管理主机中留下脚本文件。
ansible all -m script -a '/tmp/test.sh'

7.

yum模块
利用yum模块安装软件包,虽然能被shell模块替代
但是用yum模块更显专业一些 软件包名:
name:指定软件包的名字
state状态:
present:安装软件包(默认就是这个)
absent:卸载软件包
#安装nmap软件包
[root@ansible ~]# ansible all -m yum -a 'name=nmap'
#卸载nmap软件包
[root@ansible ~]# ansible all -m yum -a 'name=nmap state=absent'

8.

service模块
利用service模块管理服务程序,虽然能被shell模块替代
但是用service模块更显专业一些 服务名称:
name:指定服务的名字
state状态:
started:启动服务
stopped:停止服务
restarted:重启服务
reloaded:平滑重载
enabled开机自启动:
true:设置开机自启动
false:设置开启不启动
#启动firewalld并设置开机自启动
[root@ansible ~]# ansible Web01 -m service -a 'name=firewalld state=started enabled=true'
#关闭firewalld并设置开机不启动
[root@ansible ~]# ansible Web01 -m service -a 'name=firewalld state=stopped enabled=false'

9.

user模块
用户管理模块。管理用户账号 :指定用户名
name:指定操作的用户的名字
:用户描述
comment:指定用户的描述信息
:createhome:是否创建家目录
:uid:指定用户的uid号
:groups:指定用户的附加组(默认创建和用户名相同的组)
:password:指定用户的密码
:update_password:更新用户的密码
:shell指定用户的登陆方式
/bin/bash:能登录系统
/sbin/nologin:不能登录系统
:home:指定用户的家目录路径
:state状态:
present:创建用户(默认就是这个)
absent:删除用户
:remove:当指定state=absent时,确认是否删除用户家目录
true
false
#在Web02上创建一个普通用户yunjisuan,并设置用户的密码为123123
[root@ansible ~]# ansible Web02 -m user -a 'name=yunjisuan comment="welcom to yunjisuan" uid=1066 groups=wheel password=123123 shell=/bin/bash home=/home/yunjisuan'

密码是明文的需要下载个命令加密

利用ansible的user模块状态用户时要注意在password参数的后边添加密文,否则不能登陆用户
通过Python的pip程序安装passlib即可为密码加密 #安装Python2的pip工具,并通过pip工具安装Python的加密模块来给密码加密
[root@ansible ~]# yum -y install epel-release
[root@ansible ~]# yum -y install python2-pip
[root@ansible ~]# pip install passlib
#生成密文密码
[root@ansible ~]# python -c "from passlib.hash import sha512_crypt;import getpass;print sha512_crypt.encrypt(getpass.getpass())"
Password: #输入你想要加密的密码
$$rounds=$Tw15COd8DLh/VS94$Mcmz/8CcjBKiEl0mYHcOQQCxEA5mz66EcGH2qXVk6o.Sm7FsRS.DsDVy6ET8iI6jDa045I94slZqWFwyYnRSW1 #加密后的密码

10.

setup模块
Ansible中使用setup模块收集,查看被管理主机的facts(facts是Ansible采集被管理主机设备信息的一个功能)。每个被管理主机在接收并运行管理命令之前,都会将自己的相关信息(操作系统版本,IP地址等)发送给控制主机 #查看远程主机的facts信息
[root@ansible ~]# ansible Web01 -m setup | head

ansible批量管理工具的搭建与简单的操作的更多相关文章

  1. Linux系统——Ansible批量管理工具

    批量管理工具: (1)ansible 操作简单(适用于500台以下服务器) (2)saltstack 比较复杂(一般适用于1000-4w台服务器) (3)puppet超级复杂 systemctl(统一 ...

  2. Python开发程序:简单主机批量管理工具

    题目:简单主机批量管理工具 需求: 主机分组 登录后显示主机分组,选择分组后查看主机列表 可批量执行命令.发送文件,结果实时返回 主机用户名密码可以不同 流程图: 说明: ### 作者介绍: * au ...

  3. 简单主机批量管理工具(这里实现了paramiko 用su切换到root用户)

    项目名:简单主机批量管理工具 一.需求 1.主机分组 2.可批量执行命令.发送文件,结果实时返回,执行格式如下 batch_run  -h h1,h2,h3   -g web_clusters,db_ ...

  4. Python简单主机批量管理工具

    一.程序介绍 需求: 简单主机批量管理工具 需求: 1.主机分组 2.主机信息使用配置文件 3.可批量执行命令.发送文件,结果实时返回 4.主机用户名密码.端口可以不同 5.执行远程命令使用param ...

  5. 使用ansible批量管理远程服务器

    使用ansible批量管理远程服务器 背景 本地需要管理远程的一批服务器,主要执行以下任务: 1) 将本地的文件复制到远端所有服务器: 2) 需要在远程服务器中执行一个个命令: 远端服务器路径并非完全 ...

  6. 六.ansible批量管理服务

    期中集群架构-第六章-ansible批量管理服务介绍====================================================================== 01. ...

  7. 轻量级批量管理工具pssh

    pssh工具 pssh工具是个轻量级的批量管理工具,相比同类型的开源工具 Ansible,Saltstack,他比较轻量级,需要对管理的主机做秘钥认证 Ansible是可以做秘钥认证,也可以通过配置文 ...

  8. Ansible批量部署工具

    Ansible:自动化运维工具 你需要在一台机器上yum install 一个包,这时候有一个需求,比如现在有5台机同时需要装apache这个包,那么100台呢,ssh上去就太慢了,这时候就借助到了a ...

  9. Ansible 批量管理Windows Server服务器

    Ansible批量管理Windows Server         Ansible是一款为类Unix系统开发的自由开源的配置和自动化工具,  它用Python写成,类似于saltstack和Puppe ...

随机推荐

  1. Python使用中错误(持续更新.....)

    1.在使用requests发送请求,响应数据转成json提示,没有可解码的json 解决办法: 这是由于,发送请求的数据,存在错误,响应出错比如404 400,所以找不到可以解码的json 示例如下: ...

  2. UVA 11582 Colossal Fibonacci Numbers(数学)

    Colossal Fibonacci Numbers 想先说下最近的状态吧,已经考完试了,这个暑假也应该是最后刷题的暑假了,打完今年acm就应该会退了,但是还什么都不会呢? +_+ 所以这个暑假,一定 ...

  3. Zookeeper应用之——选举(Election)

    请注意,此篇文章并不是介绍Zookeeper集群内部Leader的选举机制,而是应用程序使用Zookeeper作为选举. 使用Zookeeper进行选举,主要用到了Znode的两个性质: 临时节点(E ...

  4. poj3133 插头dp

    #include <iostream> #include <cstdio> #include <string.h> #include <vector> ...

  5. 【转】Jira插件安装

    一.Jira插件列表(可以将下面免费插件直接下载,然后登陆jira,在"插件管理"->"上传插件",将下载后的免费插件直接进行上传安装即可) 序号 插件名 ...

  6. Determine YARN and MapReduce Memory Configuration Settings

    Determine YARN and MapReduce Memory Configuration Settings https://docs.hortonworks.com/HDPDocuments ...

  7. 最短路径之Bellman-Ford——解决负权边

    Bellman-Ford算法非常简单,核心代码四行,可以完美的解决带有负权边的图. for(k=1;k<=n-1;k++) //外循环循环n-1次,n为顶点个数 for(i=1;i<=m; ...

  8. topcoder srm 590 div1 (max_flow_template)

    problem1 link 对于每一个,找到其在目标串中的位置,判断能不能移动即可. problem2 link 如果最后的$limit$为$11=(1011)_{2}$,那么可以分别计算值为$(10 ...

  9. ipan笔记

    // 对于mysql来说, 如果字段没有设置其 default值, 则会自动 设置 default值为null.同理没有设置not null, 则会自动允许null =yes // create ta ...

  10. 如何在基于Bytom开发过程中使用Bigchaindb

    上期我们讲了在基于比原开发过程中链外存储可以用分布式存储IPFS,这期我们还给大家介绍另外一种链外存储的解决方案.bigchaindb:https://www.bigchaindb.com,下面我们讲 ...