ansible自动化运维03
ansible自动化运维常用模块
常用模块实现的功能:安装软件包;修改配置文件;创建程序用户组;创建目录,并修改所属和权限;挂载;启动服务;测试。
command模块:
shell模块:
注意:command和shell模块功能类似,均不支持别名(命令),区别:command只能使用一条指令,shell可以使用管道!
例子1:
[root@host1 ~]# ansible test1 -m shell -a "df -h|grep /$"
192.168.132.163 | CHANGED | rc=0 >>
/dev/mapper/centos-root 17G 4.5G 13G 26% /
192.168.132.162 | CHANGED | rc=0 >>
/dev/mapper/centos-root 17G 4.4G 13G 26% /
例子2: 统一创建test11用户名,并且修改密码为123.
[root@host1 ~]# ansible test1 -m shell -a "useradd test11"
192.168.132.162 | CHANGED | rc=0 >>
192.168.132.163 | CHANGED | rc=0 >>
[root@host1 ~]# ansible test1 -m shell -a "echo 123|passwd --stdin test11"
192.168.132.163 | CHANGED | rc=0 >>
Changing password for user oldboy.
passwd: all authentication tokens updated successfully.
192.168.132.162 | CHANGED | rc=0 >>
Changing password for user oldboy.
passwd: all authentication tokens updated successfully.
拓展模块:chdir模块,creates模块
chdir模块是操作前切换目录,切换后的操作都会在切换后的目录下进行,比如切换创建文件,那么这个文件就会创建在切换后的目录下。
例子:
ansible主机:在客户端/tmp目录下创建文件test01
[root@host1 ~]# ansible 192.168.132.162 -m command -a "chdir=/tmp touch test01"
客户端(被控端):
[root@host2 tmp]# ll
-rw-r--r-- 1 root root 0 Dec 10 08:59 test01
creates模块:创建文件,如果文件存在就略过此操作
例子:创建文件test02在远程客户端192.168.132.162/tmp/目录下,如果存在则略过此操作
[root@host1 ~]# ansible 192.168.132.162 -m command -a "creates=/tmp/t1 chdir=/tmp touch test02"
yum模块:
例子:安装httpd服务
[root@host1 ~]# ansible test1 -m yum -a "name=httpd state=installed"
192.168.132.163 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": true,
"changes": {
"installed": [
"httpd"
]
},
"msg": "",
"rc": 0,
"results": [
"Loaded plugins: fastestmirror, langpacks\nLoading mirror speeds from cached hostfile\n * base: mirrors.neusoft.edu.cn\n * extras: mirrors.neusoft.edu.cn\n * updates: mirrors.neusoft.edu.cn\nResolving Dependencies\n--> Running transaction check\n---> Package httpd.x86_64 0:2.4.6-90.el7.centos will be installed\n--> Processing Dependency: httpd-tools = 2.4.6-90.el7.centos for package: httpd-2.4.6-90.el7.centos.x86_64\n--> Running transaction check\n---> Package httpd-tools.x86_64 0:2.4.6-90.el7.centos will be installed\n--> Finished Dependency Resolution\n\nDependencies Resolved\n\n================================================================================\n Package Arch Version Repository Size\n================================================================================\nInstalling:\n httpd x86_64 2.4.6-90.el7.centos base 2.7 M\nInstalling for dependencies:\n httpd-tools x86_64 2.4.6-90.el7.centos base 91 k\n\nTransaction Summary\n================================================================================\nInstall 1 Package (+1 Dependent package)\n\nTotal download size: 2.8 M\nInstalled size: 9.5 M\nDownloading packages:\n--------------------------------------------------------------------------------\nTotal 532 kB/s | 2.8 MB 00:05 \nRunning transaction check\nRunning transaction test\nTransaction test succeeded\nRunning transaction\n Installing : httpd-tools-2.4.6-90.el7.centos.x86_64 1/2 \n Installing : httpd-2.4.6-90.el7.centos.x86_64 2/2 \n Verifying : httpd-tools-2.4.6-90.el7.centos.x86_64 1/2 \n Verifying : httpd-2.4.6-90.el7.centos.x86_64 2/2 \n\nInstalled:\n httpd.x86_64 0:2.4.6-90.el7.centos \n\nDependency Installed:\n httpd-tools.x86_64 0:2.4.6-90.el7.centos \n\nComplete!\n"
]
}
192.168.132.162 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": true,
"changes": {
"installed": [
"httpd"
]
},
"msg": "",
"rc": 0,
"results": [
"Loaded plugins: fastestmirror, langpacks\nLoading mirror speeds from cached hostfile\n * base: mirror.lzu.edu.cn\n * extras: mirror.lzu.edu.cn\n * updates: mirror.lzu.edu.cn\nResolving Dependencies\n--> Running transaction check\n---> Package httpd.x86_64 0:2.4.6-90.el7.centos will be installed\n--> Processing Dependency: httpd-tools = 2.4.6-90.el7.centos for package: httpd-2.4.6-90.el7.centos.x86_64\n--> Running transaction check\n---> Package httpd-tools.x86_64 0:2.4.6-90.el7.centos will be installed\n--> Finished Dependency Resolution\n\nDependencies Resolved\n\n================================================================================\n Package Arch Version Repository Size\n================================================================================\nInstalling:\n httpd x86_64 2.4.6-90.el7.centos base 2.7 M\nInstalling for dependencies:\n httpd-tools x86_64 2.4.6-90.el7.centos base 91 k\n\nTransaction Summary\n================================================================================\nInstall 1 Package (+1 Dependent package)\n\nTotal download size: 2.8 M\nInstalled size: 9.5 M\nDownloading packages:\n--------------------------------------------------------------------------------\nTotal 249 kB/s | 2.8 MB 00:11 \nRunning transaction check\nRunning transaction test\nTransaction test succeeded\nRunning transaction\n Installing : httpd-tools-2.4.6-90.el7.centos.x86_64 1/2 \n Installing : httpd-2.4.6-90.el7.centos.x86_64 2/2 \n Verifying : httpd-tools-2.4.6-90.el7.centos.x86_64 1/2 \n Verifying : httpd-2.4.6-90.el7.centos.x86_64 2/2 \n\nInstalled:\n httpd.x86_64 0:2.4.6-90.el7.centos \n\nDependency Installed:\n httpd-tools.x86_64 0:2.4.6-90.el7.centos \n\nComplete!\n"
]
}
copy模块:
例子1: 批量推送(复制)本地hosts文件给远端,并且备份远端源文件。
[root@host1 ~]# ansible test1 -m copy -a "src=/etc/hosts dest=/etc/hosts backup=yes"
192.168.132.162 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"backup_file": "/etc/hosts.15364.2019-10-10@15:14:09~",
"changed": true,
"checksum": "35e756c648782271a53cef2b3f6da3058831d44f",
"dest": "/etc/hosts",
"gid": 0,
"group": "root",
"md5sum": "16f49d9e42dd5c20906f11c0a76b8626",
"mode": "0644",
"owner": "root",
"size": 224,
"src": "/root/.ansible/tmp/ansible-tmp-1570691646.54-3936729023517/source",
"state": "file",
"uid": 0
}
192.168.132.163 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"backup_file": "/etc/hosts.29478.2019-10-10@15:14:09~",
"changed": true,
"checksum": "35e756c648782271a53cef2b3f6da3058831d44f",
"dest": "/etc/hosts",
"gid": 0,
"group": "root",
"md5sum": "16f49d9e42dd5c20906f11c0a76b8626",
"mode": "0644",
"owner": "root",
"size": 224,
"src": "/root/.ansible/tmp/ansible-tmp-1570691646.58-21560942432423/source",
"state": "file",
"uid": 0
}
例子2:批量向远端添加rsync认证文件。
[root@host1 ~]# ansible test1 -m copy -a "content='rsync_backup:1' dest=/etc/rsync.password owner=root group=root mode=600"
192.168.132.162 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": true,
"checksum": "c6e45d8d2843493d4eb37947d3a9f8df32079196",
"dest": "/etc/rsync.password",
"gid": 0,
"group": "root",
"md5sum": "70a0afc63f084920453ac5ac3e2d733f",
"mode": "0600",
"owner": "root",
"size": 14,
"src": "/root/.ansible/tmp/ansible-tmp-1570692587.41-43388984791069/source",
"state": "file",
"uid": 0
}
192.168.132.163 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": true,
"checksum": "c6e45d8d2843493d4eb37947d3a9f8df32079196",
"dest": "/etc/rsync.password",
"gid": 0,
"group": "root",
"md5sum": "70a0afc63f084920453ac5ac3e2d733f",
"mode": "0600",
"owner": "root",
"size": 14,
"src": "/root/.ansible/tmp/ansible-tmp-1570692587.47-144328961636524/source",
"state": "file",
"uid": 0
}
service模块:
例子1:批量启动httpd服务,并且开启httpd服务开机自启动。
[root@host1 ~]# ansible test1 -m service -a "name=httpd state=started enabled=yes"
例子2:批量修改httpd服务首页页面内容为welcome to rybtest.
[root@host1 ~]# ansible test1 -m copy -a "content='welcome to rybtest' dest=/var/www/html/index.html"
group模块:
例子1:批量添加组名www,并且设置gid为666.
[root@host1 ~]# ansible test1 -m group -a "name=www gid=666"
例子2:批量修改组的gid为888
[root@host1 ~]# ansible test1 -m group -a "name=www gid=888"
例子3:批量删除www组
[root@host1 ~]# ansible test1 -m group -a "name=www gid=888 state=absent"
user模块:
注意:user模块在centos7执行可能有点问题,研究待定!!!
例子1:批量创建用户test01,指定uid 60000,gid 666,并设置密码为123456。
例子2:创建一个程序用户www,指定uid 666,gid 666. 不让登陆,不创建家目录。
file模块:
例子1:创建目录 /data02和/backup,属主666,属组666,递归。
[root@host1 ~]# ansible test1 -m file -a "path=/data02 owner=666 group=666 recurse=yes state=directory"
例子2:创建文件 /etc/rsync.password,权限600。
[root@host1 ~]# ansible test1 -m file -a "path=/etc/rsync.password state=touch mode=600"
例子3:对/etc/hosts做软连接,到/tmp/hosts.
[root@host1 ~]# ansible test1 -m file -a "src=/etc/hosts path=/tmp/hosts state=link"
file模块小总结:file模块仅适合创建目录,修改所属和权限,创建链接,除了这些操作的其他文件管理都通过copy模块实现。
mount模块:
例4:创建多级目录/data1/test1,并且设置目录所有者,所属组。
ansible主机如下操作:
[root@host1 ~]# ansible 192.168.132.162 -m file -a "dest=/data1/test1 owner=www group=www state=directory"
去客户端主机查看:
[root@host2 test01]# ll /data1/
total 0
drwxr-xr-x 2 www www 6 Dec 11 15:46 test1
例子:通过nfs实现网络文件的共享
1)安装nfs
[root@host1 ~]# ansible test1 -m yum -a "name=nfs-utils state=installed"
2)启动服务
[root@host1 ~]# ansible test1 -m service -a "name=rpcbind state=started"
[root@host1 ~]# ansible test1 -m service -a "name=nfs state=started"
3)修改配置文件
4)创建目录,用户,并修改所属
5)重载配置文件
ansible自动化运维03的更多相关文章
- Ansible自动化运维工具-上
[Ansible特点] 1)Ansible与saltstack均是基于Python语言开发的 2)安装使用简单,基于不同插件和模块实现各种软件,平台,版本的管理以及支持虚拟容器多层级的部署 3)不需要 ...
- ansible 自动化运维
Ansible 自动化运维 ansible安装epel #yum list all *ansible*#yum install *ansible*#yum info ansible#rpm -ql a ...
- Ansible 自动化运维工具
Ansible 自动化运维工具 Ansible是什么? Ansible是一个"配置管理工具"也是一个"自动化运维工具" Ansible 作用: Ansible是 ...
- 简单聊一聊Ansible自动化运维
一.Ansible概述 Ansible是今年来越来越火的一款开源运维自动化工具,通过Ansible可以实现运维自动化,提高运维工程师的工作效率,减少人为失误.Ansible通过本身集成的非常丰富的模块 ...
- Ansible自动化运维工具的使用
Ansible自动化运维工具的使用 host lnventory 管理主机 ip root账号密码 ssh端口 core mod ...
- Ansible 自动化运维——剧本(playbook)
Ansible 自动化运维--剧本(playbook) 1.playbook介绍: playbook是ansible用于配置,部署,和管理被控节点的剧本.通过playbook的详细描述,执行其中的ta ...
- Ansible自动化运维工具及其常用模块
Ansible自动化运维工具及其常用模块 目录 Ansible自动化运维工具及其常用模块 一.Ansible简介 1. Ansible概述 2. Ansible作用 3. Ansible的工作模块 4 ...
- 一文详解 Ansible 自动化运维
开源Linux 一个执着于技术的公众号 一.Ansible 概述 Ansible 是近年来越来越火的一款开源运维自动化工具,通过Ansible可以实现运维自动化,提高运维工程师的工作效率,减少人为失误 ...
- Ansible自动化运维工具
ansible软件介绍 python语言是运维人员必会的语言! ansible是一个基于Python开发的自动化运维工具!(saltstack) 其功能实现基于SSH远程连接服务! ans ...
随机推荐
- nwjs-打包
1: 将项目内所有文件压缩成一个压缩包 app.zip 2: 将压缩包重命名为 app.nw 3: 将压缩包放置到 下载解压后的 nw.js 根目录下 4: shift+鼠标右键 选择在此处打开命令窗 ...
- 基于github发布 个人网站/博客
我们可以使用GitHub去发布自己的网站了(静态网站), 只要经过简单几步即可.这样小伙伴可以给朋友或面试官展示自己个人项目啦. 第一步:创建一个新仓库 第二步:在仓库选择“Settings”页,找到 ...
- 开源推荐 - CoDo开源一站式DevOps平台
一群有梦想的年轻人开源了一个云管理平台,他们的口号是:让天下没有996的运维 有幸参与到CoDo项目的开发,这是一个非常棒的一站式开源运维平台,分享给大家 平台介绍 CODO是一款为用户提供企业多混合 ...
- MySQL实战45讲学习笔记:第九讲
一.今日内容概要 今天的正文开始前,我要特意感谢一下评论区几位留下高质量留言的同学.用户名是 @某.人 的同学,对文章的知识点做了梳理,然后提了关于事务可见性的问题,就是先启动但是后提交的事务,对数据 ...
- 带有连接池的Http客户端工具类HttpClientUtil
一.背景 业务开发中,经常会遇到通过http/https向下游服务发送请求.每次都要重复造轮子写HttpClient的逻辑,而且性能.功能参差不齐.这里分享一个高性能的.带连接池的通用Http客户端工 ...
- 你还在为了JVM而烦恼么?(内存结构和垃圾回收算法)
做JAVA也有接近2年的时间了,公司的leader说,做JAVA,三年是个坎,如果过了三年你还没有去研究JVM的话,那么你这个程序员只能是板砖的工具了.恰逢辞职,来个JVM的解析可好? JVM是J ...
- hystrixDashboard(服务监控)
1.新建项目 microservicecloud-consumer-hystrix-dashboard 2.yml文件 server: port: 9001 3.在pom.xml文件增加如下内容 &l ...
- vertica 设置最大会话数
默认会话数最大值55,如果超过了,就会报如下错误: com.vertica.support.exceptions.NonTransientConnectionException: [Vertica][ ...
- Linux : Ubuntu 安装 RabbitMQ
安装 Erlang: 手动编译(不推荐)http://www.erlang.org/downloads下载源码 如22版本:http://erlang.org/download/otp_src_22. ...
- Git 核心概念
原文链接 Git的核心概念 聪聪的个人网站 本文不是Git使用教学篇,而是偏向理论方面,旨在更加深刻的理解Git,这样才能更好的使用它,让工具成为我们得力的助手. 版本控制系统 Git 是目前世界上最 ...