前言:ansible是一款自动化运维工具,基于Python开发,所以被管理主机需要安装有Python

另外:下例模块仅供参考如有错误还请联系本人


目录

一.准备ansible

1.Control控制节点

2.配置SSH密钥实现免密码登录

3.安装ansible

4.Ansible基本功能介绍

二.ansible的书写

1.修改主配置文件准备环境

2.常见模块


1.批量系统配置         2.批量程序部署         3.批量运行命令等功能

4.批量修改服务器密码         5.批量安装软件包         6.批量修改配置

ansible原理:

控制端主机自带很多模块(模块就是脚本);

ansible通过ssh远程被管理主机,将控制端的模块(脚本)或命令传输到被管理主机; 在被管理端主机执行模块(脚本)或命令,执行不同的模块或命令可以实现不同的功能;

注:绝大多数模块(脚本)都需要参数才能执行成功!!!类似于shell脚本的位置变量!

一.准备ansible

控制节点要求:

域名解析(为了方便后期操作,可以不做)

配置SSH密钥(ansible是基于ssh实现远程控制)

安装Ansible软件(自带2800多个脚本)

1.Control控制节点

如:以下写法;ping   node1 测试联通性

 vim /etc/host192.168.4.253    control
192.168.4.11     node1
192.168.4.12     node2
192.168.4.13     node3
192.168.4.14     node4
192.168.4.15     node5

2.配置SSH密钥实现免密码登录

Ansible是基于SSH远程的原理实现远程控制,如果控制端主机无法免密登录被管理端主机,后续的所有试验都会失败!!     测试 : ssh  node1

ssh-keygen         #生成ssh密钥
for i in node1 node2 node3 node4 node5
do
ssh-copy-id   $i
done

3.安装ansible

1).连网即可(如后续该网站不能下请见谅,这里只是提供思路)

yum -y install wget
wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -ivh epel-release-latest-7.noarch.rpm
yum repolist
yum install ansible

2).Git方式

git clone git://github.com/ansible/ansible.git --recursive
cd ./ansible
source ./hacking/env-setup

3).pip安装

pip 是安装Python包的管理器,类似 yum

yum install python-pip python-devel
yum install gcc glibc-devel zibl-devel  rpm-bulid openssl-devel
pip install  --upgrade pip
pip install ansible --upgrade

确认安装

ansible --version

注:下包尽量去关网下!!!!!!

4.Ansible基本功能介绍

1)Ansible相关工具

/usr/bin/ansible 主程序,临时命令执行工具
/usr/bin/ansible-doc 查看配置文档,模块功能查看工具
/usr/bin/ansible-galaxy 下载/上传优秀代码或Roles模块的官网平台
/usr/bin/ansible-playbook 定制自动化任务,编排剧本工具
/usr/bin/ansible-pull 远程执行命令的工具
/usr/bin/ansible-vault 文件加密工具
/usr/bin/ansible-console 基于Console界面与用户交互的执行工具

2)ansible配置文件查找顺序

首先检测ANSIBLE_CONFIG变量定义的配置文件(默认没有这个变量)

其次检查当前目录下的./ansible.cfg文件

再次检查当前用户家目录下~/ansible.cfg文件

最后检查/etc/ansible/ansible.cfg文件

3)ansible的使用必须在ansible目录里

mkdir  ~/ansible

cd  ~/ansible


二.ansible的书写

很多ansible模块都具有幂等性的特征。(只在ansible) 幂等性:任意次执行所产生的影响均与一次执行的影响相同。 万能模块 shell(没有幂等性)

1.修改主配置文件准备环境

mkdir   ansible ;cd ansible

vim  ~/ansible/ansible.cfg #手动书写配置文件或cp  /etc/ansible/ansible.cfg  /ansible/ansible.cfg

[defaults]
inventory = ~/ansible/inventory     //清单=文件名 #主机清单配置文件(inventory可以是任意文件名)
remote_user     = root              //连接受管机的远程用户
roles_path    = roles               //指定默认的角色目录
[privilege_escalation]              //设置用户 sudo 提权
become=True                         //需要提权
become_method=sudo                  //提权方式为 sudo
become_user=root                    //提权为 root
become_ask_pass=False               //无需验证密码
#forks = 5                          #ssh并发数量(默认是5)
#host_key_checking = False (不提示)#是否校验密钥(第一次ssh时是否提示yes/no)

2) 修改主机清单文件(清单文件名必须与主配置文件inventory定义的一致)

[test]                    #定义主机组(组名称任意)(也可以一台一台写)
node1                    #定义组中的具体主机,组中包括一台主机node1
[proxy]                    #定义主机组(组名称任意)
node2                      #proxy组中包括一台主机node2
[webserver]
node[3:4]                 #这里的node[3:4]等同于node3和node4
[database]
node5
[cluster:children]        #嵌套组(children为关键字),不需要也可以不创建嵌套组
webserver                  #嵌套组可以在组中包含其他组
database

测试    ansible  all  --list-hosts

2.常见模块

通过ansible-doc获取帮助

ansible-doc  -l                      #列出所有模块
ansible-doc -l | grep yum            #在所有模块中过滤关键词
ansible-doc yum                         #查看模块帮助 reset

ping模块

它不会发送任何ICMP协议的ping数据包,控制端主机仅仅是ssh远程被管理端主机,检查其是否有python环境,能顺利远程并且有Python环境就会返回正确的提示信息,否则报错

ansible all –m ping

command模块

模块就是脚本(多数为Python脚本),多数脚本都支持参数,默认模块为command

ansible  node1  -m  command  -a   "uptime"     #查看CPU负载
ansible  node1  -m command -a  "uname -r"      #查看内核版本
ansible  node1   -a   "ip a s"                  #查看网卡信息
ansible  all   -a   "date"                      #查看时间

shell模块

command和shell模块的区别,command不支持bash的特性(bash特性如:管道和重定向等功能),但是shell模块可以支持。

ansible test -m command -a "ps | wc -l"         #报错
ansible test -m command -a  "ls &"               #报错
ansible test -m shell -a  "ps aux | wc -l"       #进程数量
ansible test -m shell -a  "who"                   #登陆信
ansible test -m shell -a  "touch /tmp/txt.txt"

#使用shell模块创建文件会有Warning警告提示,正常!!!

script模块

script模块会把-a后面的脚本拷贝到被管理端主机,然后执行这个脚本。

vim  ~/ansible/test.sh
#!/bin/bash
dnf -y install httpd
systemctl start httpd
ansible  test  -m script  -a  "./test.sh"    

file模块

file模块可以创建文件、目录、链接;修改权限与属性等

ansible  test  -m  file  -a  "path=/tmp/file.txt state=touch"        #远程test组中所有主机,新建文件,path后面指定要创建的文件或目录的名称
ansible  test  -m  file  -a  "path=/tmp/mydir state=directory"
#远程test组中所有主机,创建目录,path后面指定要创建的文件或目录的名称ansible  test  -m  file  -a  "path=/tmp/file.txt owner=sshd group=adm mode=0777"
#修改文件或目录权限,path后面指定要修改的文件名或目录名称,owner后面指定用户,
ansible test -m file -a "path=/tmp/mydir state=absent"
abset(卸载,删)  perset(装包,增)
ansible test -m file -a "path=/tmp/file.txt state=absent"
#state=absent代表删除(删除目录)
ansible test -m file -a "src=/etc/hosts  path=/tmp/host.txt state=link"
#给/etc/hosts文件创建一个链接文件/tmp/host.txt(src指定源文件,path是软链接文件名)link(软链接) hard(硬链接1)

copy模块

可以将文件拷贝到远程主机

echo AAA > ~/a3.txt
ansible test -m copy -a "src=~/a3.txt dest=/root/"
#把管理端本机的a3.txt文件,拷贝到test组中所有主机的/root/目录
#src代表源文件,dest代表目标文件

fetch模块

fetch模块与copy类似,但是作用相反,可以将其他主机的文件拷贝到本地

ansible test -m fetch -a "src=/etc/hostname   dest=~/"
#将远程test组中所有主机的hostname文件下载到本地家目录

lineinfile|replace模块

在修改单个文件的单行内容时可以使用lineinfile模块

ansible test -m lineinfile  -a "path=/etc/issue line='hello world'"
#在/etc/issue文件中添加一行内容hello world,默认添加到最后,line后面跟的是需要添加的文件内容
ansible test -m lineinfile -a "path=/etc/issue line='hello world'"
#基于幂等原则,重复执行,不会创建多行内容

lineinfile会替换一整行,replace可以替换关键词

ansible test -m replace -a "path=/etc/issue.net regexp=Kernel replace=Ocean"
#将node1主机中/etc/issue.net文件全文所有的Kernel替换为Ocean

user模块

user模块可以实现Linux系统账户管理

ansible test -m user -a "name=tuser1"
ansible test -m user -a "name=tuser2 uid=1010 group=adm groups=daemon,root home=/home/tuser2"
#创建账户并设置对应的账户属性,uid指定用户ID号,group指定用户属于哪个基本组
#groups指定用户属于哪些附加组,home指定用户的家目录
ansible test -m user -a "name=tuser1 password={{'abc'| password_hash('sha512')}}"
#修改账户密码,用户名是tuser1,密码是abc,密码经过sha512加密ansible test -m user -a "name=tuser1 state=absent"
#删除账户tuser1,state=absent代表删除账户的意思,name指定要删除的用户名是什么ansible test -m user -a "name=tuser2 state=absent remove=true"
#删除tuser2账户同时删除家目录、邮箱,相当于执行userdel  -r  tuser2

yum_repository模块

使用yum_repository可以创建或修改yum源配置文件

ansible test -m yum_repository -a "name=myyum description=hello baseurl=ftp://192.168.4.254/centos gpgcheck=no"
#新建一个yum源配置文件/etc/yum.repos.d/myyum.repoansible test -m yum_repository -a "name=myyum description=test baseurl=ftp://192.168.4.254/centos gpgcheck=yes gpgkey=…(密钥文件)"
#修改yum源文件内容
ansible test -m yum_repository -a "name=myyum state=absent"
#删除yum源文件myyum

yum模块

使用yum模块可以安装、卸载、升级软件包

ansible test -m yum -a "name=unzip state=present"(可写可不写)
#安装unzip软件包,state默认为present,也可以不写
ansible test -m yum -a "name=unzip state=latest"
#升级unzip软件包,软件名称可以是*,代表升级所有软件包ansible test -m yum -a "name=unzip state=absent"
#调用yum模块,卸载unzip软件包,state=absent代表卸载软件

service模块

service为服务管理模块(启动、关闭、重启服务等)

ansible test -m yum -a "name=httpd"
#调用yum模块,安装httpd软件包
ansible test -m service -a "name=httpd state=started"
#调用service模块,启动httpd服务
ansible test -m service -a "name=httpd state=stopped"
#调用service模块,关闭httpd服务
ansible test -m service -a "name=httpd state=restarted"
#调用service模块,重启httpd服务
ansible test -m service -a "name=httpd enabled=yes"
#调用service模块,设置httpd服务开机自启

lvg模块

创建、删除卷组(VG),修改卷组大小

ansible test -m yum -a "name=lvm2"
#安装lvm2软件包,安装了lvm2软件后,才有pvcreate、vgcreate、lvcreate等命令
ansible test -m lvg -a "vg=myvg pvs=/dev/vdb1"
#创建名称为myvg的卷组,该卷组由/dev/vdb1组成

lvol模块

创建、删除逻辑卷(LV),修改逻辑卷大小

ansible test -m lvol -a "lv=mylv vg=myvg size=2G"
#使用myvg这个卷组创建一个名称为mylv的逻辑卷,大小为2G
ansible test -m lvol -a "lv=mylv vg=myvg size=4G"
#修改LV逻辑卷大小
ansible test -m lvol -a "lv=mylv vg=myvg state=absent force=yes"
#删除逻辑卷,force=yes是强制删除ls
ansible test -m lvg -a "vg=myvg state=absent"
#删除卷组myvg

Ansible自动化运维基础-------ad-hoc相关推荐

  1. Ansible自动化运维基础-------ploybook

    前提提要:此文是https://blog.csdn.net/kali_yao/article/details/119983133进阶板 目录 一.ploybook的介绍及用法介绍 1. Plouboo ...

  2. ansible自动化运维工具

    ansible自动化运维工具 ansible自动化运维脚本工具 ansible自动化运维工具 一.ssh工作原理和基本命令 1.ssh原理 2.ssh的基本命令 二.anible 自动化运维工具 1. ...

  3. ansible自动化运维从入门到精通

    ansible自动化运维 Ansible介绍 Ansible是一个同时管理多个远程主机的软件(任何可以通过SSH协议登录的机器),因此Ansible可以管理远程虚拟机.物理机,也可以是本地主机. An ...

  4. @ansible自动化运维详解(总述)

    ansible [自动化运维应用场景] "运维的未来是,让研发人员能够借助工具.自动化和流程,并且让他们能够在运维干预极少的情况下部署和运营服务,从而实现自助服务.每个角色都应该努力使工作实 ...

  5. 大型企业中如何批量管理千万台服务器之ansible自动化运维工具详解 [⭐建议收藏⭐]

    文章目录 ansible 自动化运维工具 详解 关于作者 作者介绍 一.ansible 概述 1.1 ansible 概述 1.2 是什么要使用 ansible 1.3 ansible 功能 1.4 ...

  6. ansible自动化运维详解(一)ansible的安装部署、参数使用、清单管理、配置文件参数及用户级ansible操作环境构建

    文章目录 ansible自动化运维详解(一)ansible的安装部署.参数使用.清单管理.配置文件参数及用户级ansible操作环境构建 一.ansible的安装部署 1.1.ansible简介 1. ...

  7. Ansible自动化运维工具介绍与部署

    ansible自动化运维工具介绍与部署 文章目录 一.什么是自动化运维? 二.常用的自动化运维工具 2.1 Ansible 2.2 SaltStack 2.3 Puppet 2.4 三种自动化工具特点 ...

  8. Ansible自动化运维_超详细

    Ansible自动化运维 自动化运维工具简介 Puppet 自动运维工具特点: Saltstack 自动运维工具特点: Ansible 自动运维工具特点: Ansible 运维工具原理 Ansible ...

  9. Ansible自动化运维工具介绍

    介绍 Ansible自动化运维工具,是基于Python开发的,可以实现批量系统配置,批量程序部署.批量运行命令等等. ansible是基于模块工作的,本身没有批量部署的能力.真正具有批量部署的是ans ...

最新文章

  1. css 文字过长 省略号,css实现文字过长显示省略号的方法
  2. 两虎相争将带来优质的互联网搜索服务 --- 我看Google归来!
  3. windows 2003 终端服务超出最大允许连接数(远程桌面,解决办法)
  4. cinder块存储配置使用lvm
  5. 于.net开发平台项目案例集锦
  6. mac mysql的初始密码_MAC版修改MySQL初始密码的方法
  7. 【转载】WinCE中的RAM-Based Registry与HIVE-Based Registry
  8. PostgreSQL数据库远程连接功能的开启
  9. flex 返回数据到 html5,Flex与javascript通信
  10. org.apache.catalina.loader.StandardClassLoader@1af33d6
  11. 计算机系统感染了病毒怎么办,老司机教你电脑感染了病毒怎么解决
  12. 微信小程序中自定义select下拉选项框
  13. 解绑ip linux,H3C 批量解绑 IP 地址绑定
  14. html5 input的type属性启动数字输入法
  15. 在线共享音乐吧(Online Share Music Bar)解决方案
  16. RTL8821CS移植过程记录
  17. 逻辑回归基本流程及鸢尾花项目实战
  18. 携程到底有没有大数据杀熟?!
  19. 设计模式总结 By李建忠老师
  20. 一键关闭windows防火墙_win7系统怎么一键关闭危险端口怎么办【操作方法】

热门文章

  1. Python常见问题(1):来历与简介General Python FAQ
  2. 朴素贝叶斯Naïve Bayes分类算法在Hadoop上的实现
  3. 局部特征(5)——如何利用彩色信息 Color Descriptors
  4. 2018-2019-2 20165330《网络对抗技术》Exp9 Web安全基础
  5. 阿里云自营建站买一年送一年
  6. UiBot新版本即将上线!添加Java程序支持!
  7. 【干货】浅谈分布式数据库中间件之分库分表
  8. java 使用webmagic 爬虫框架爬取博客园数据
  9. CSS常用样式及示例
  10. /sbin/ifup: configuration for eth0 not found解决