Ansible自动化运维基础-------ad-hoc
前言: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 ansible2).Git方式
git clone git://github.com/ansible/ansible.git --recursive
cd ./ansible
source ./hacking/env-setup3).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相关推荐
- Ansible自动化运维基础-------ploybook
前提提要:此文是https://blog.csdn.net/kali_yao/article/details/119983133进阶板 目录 一.ploybook的介绍及用法介绍 1. Plouboo ...
- ansible自动化运维工具
ansible自动化运维工具 ansible自动化运维脚本工具 ansible自动化运维工具 一.ssh工作原理和基本命令 1.ssh原理 2.ssh的基本命令 二.anible 自动化运维工具 1. ...
- ansible自动化运维从入门到精通
ansible自动化运维 Ansible介绍 Ansible是一个同时管理多个远程主机的软件(任何可以通过SSH协议登录的机器),因此Ansible可以管理远程虚拟机.物理机,也可以是本地主机. An ...
- @ansible自动化运维详解(总述)
ansible [自动化运维应用场景] "运维的未来是,让研发人员能够借助工具.自动化和流程,并且让他们能够在运维干预极少的情况下部署和运营服务,从而实现自助服务.每个角色都应该努力使工作实 ...
- 大型企业中如何批量管理千万台服务器之ansible自动化运维工具详解 [⭐建议收藏⭐]
文章目录 ansible 自动化运维工具 详解 关于作者 作者介绍 一.ansible 概述 1.1 ansible 概述 1.2 是什么要使用 ansible 1.3 ansible 功能 1.4 ...
- ansible自动化运维详解(一)ansible的安装部署、参数使用、清单管理、配置文件参数及用户级ansible操作环境构建
文章目录 ansible自动化运维详解(一)ansible的安装部署.参数使用.清单管理.配置文件参数及用户级ansible操作环境构建 一.ansible的安装部署 1.1.ansible简介 1. ...
- Ansible自动化运维工具介绍与部署
ansible自动化运维工具介绍与部署 文章目录 一.什么是自动化运维? 二.常用的自动化运维工具 2.1 Ansible 2.2 SaltStack 2.3 Puppet 2.4 三种自动化工具特点 ...
- Ansible自动化运维_超详细
Ansible自动化运维 自动化运维工具简介 Puppet 自动运维工具特点: Saltstack 自动运维工具特点: Ansible 自动运维工具特点: Ansible 运维工具原理 Ansible ...
- Ansible自动化运维工具介绍
介绍 Ansible自动化运维工具,是基于Python开发的,可以实现批量系统配置,批量程序部署.批量运行命令等等. ansible是基于模块工作的,本身没有批量部署的能力.真正具有批量部署的是ans ...
最新文章
- css 文字过长 省略号,css实现文字过长显示省略号的方法
- 两虎相争将带来优质的互联网搜索服务 --- 我看Google归来!
- windows 2003 终端服务超出最大允许连接数(远程桌面,解决办法)
- cinder块存储配置使用lvm
- 于.net开发平台项目案例集锦
- mac mysql的初始密码_MAC版修改MySQL初始密码的方法
- 【转载】WinCE中的RAM-Based Registry与HIVE-Based Registry
- PostgreSQL数据库远程连接功能的开启
- flex 返回数据到 html5,Flex与javascript通信
- org.apache.catalina.loader.StandardClassLoader@1af33d6
- 计算机系统感染了病毒怎么办,老司机教你电脑感染了病毒怎么解决
- 微信小程序中自定义select下拉选项框
- 解绑ip linux,H3C 批量解绑 IP 地址绑定
- html5 input的type属性启动数字输入法
- 在线共享音乐吧(Online Share Music Bar)解决方案
- RTL8821CS移植过程记录
- 逻辑回归基本流程及鸢尾花项目实战
- 携程到底有没有大数据杀熟?!
- 设计模式总结 By李建忠老师
- 一键关闭windows防火墙_win7系统怎么一键关闭危险端口怎么办【操作方法】
热门文章
- Python常见问题(1):来历与简介General Python FAQ
- 朴素贝叶斯Naïve Bayes分类算法在Hadoop上的实现
- 局部特征(5)——如何利用彩色信息 Color Descriptors
- 2018-2019-2 20165330《网络对抗技术》Exp9 Web安全基础
- 阿里云自营建站买一年送一年
- UiBot新版本即将上线!添加Java程序支持!
- 【干货】浅谈分布式数据库中间件之分库分表
- java 使用webmagic 爬虫框架爬取博客园数据
- CSS常用样式及示例
- /sbin/ifup: configuration for eth0 not found解决