Ansible常用Ad-Hoc命令介绍

栏目: 服务器 · 发布时间: 6年前

内容简介:Ah-Hoc常用可选项如下:command命令用于系统命令,不如ping、tail、date等命令,接下来我就以date、tail为例,介绍他的使用方法,接下来的所有操作中,都会使用“web“分类。

在自动化运维的过程中,我们常常会通过命令行的形式使用Ansible模块,ansible自带了259各模块,我们可以通过一些命令来查看ansible中所含的模块,也可以查看单一模块的信息。下面,我就为大家介绍一些常用的模块。

关于ansible的部署安装请参考:

部署自动化运维服务——Ansible
ansible-doc-l                          //显示所有自带模块
ansible-doc -s “模块名称”      //查看具体模块的信息,使用‘q’退出介绍

Ad-Hoc命令格式

Ah-Hoc常用可选项如下:

  • v:--verbose:输出更详细的执行过程信息,-vvv可得到执行过程所有信息
  • i:PATH,--inventory=PATH:指定inventory信息,默认/etc/absible/hosts
  • f:NUM,--forks=NUM:并发线程数,默认5个线程
  • m:NAME,--module-name=NAME:指定执行使用的模块
  • M:DIRECTORY,--module-path=DIRECTORY:指定模块存放路径,默认/usr/share/ansible,也可以通过ANSIBLE_LIBRARY设定默认路径
  • a:'ARGUMENTS',--args='ARGUMENTS':模块参数
  • k:--ask-pass SSH:认证密码
  • K:--ask-sudo-pass sudo:用户的密码(--sudo时使用)
  • o:--one-line:标准输出至一行
  • s:--sudo:相当于 Linux 系统下的sudo命令
  • c:CONNECTION,--connection=CONNECTION:指定连接方式,可用选项paramiko(SSH)、ssh、local,local方式常用于crontab和kickstarts
  • --list-hosts:列出符合条件的主机列表,不执行任何命令

aommand模块

command命令用于系统命令,不如ping、tail、date等命令,接下来我就以date、tail为例,介绍他的使用方法,接下来的所有操作中,都会使用“web“分类。

ansible web -m command -a 'date'                         //-a后的参数需使用单引号
ansible web -m command -a 'tail -1 /etc/passwd'

Ansible常用Ad-Hoc命令介绍

cron模块

Ansible中的cron模块用于定义计划性任务。其中有两种状态(state):present表示添加(默认使用,可省略),absent表示移除。

创建计划性任务

ansible-doc -s cron                                                                                                    //查看模块信息
ansible web -m cron -a 'minute="*/1" job="/bin/echo test" name="test cron job"'  
//每分钟执行一次输出test,name的名称可以自定义,
ansible web -a 'crontab -l'                                                                                         //计划性任务,command为默认模块,-m可省略

Ansible常用Ad-Hoc命令介绍

移除计划性任务

ansible web -m cron -a 'name="test cron job" state=absent'   
//在创建时所使用的名称,取消是也要相对应,若是在创建时为设定名称,使用name=None即可

Ansible常用Ad-Hoc命令介绍

ping模块

ping模块用来测试指定主机的联通性

ansible web -m ping

Ansible常用Ad-Hoc命令介绍

user模块

user模块用于创建新用户和更改、删除已存在的用户。其中name选项用于指明创建的用户名称

新建用户

生成密钥

因为ansible user的passwd参数需要接收加密的值,所以需要利用openssl命令来生成密码,采用md5加密。

echo ansible | openssl passwd -1 -stdin   //此处为“一”,不是“L”,明文为ansible

新建用户

ansible web -m user -a 'name=zhang password="$1$zF5aYItH$MKXWT.NfH8kOV6OH3Y/Tp0"' -o

验证新建用户是否成功

ssh 172.16.10.30 -l zhang     //ssh远程登陆

Ansible常用Ad-Hoc命令介绍

删除用户

ansible web -m user -a 'name="zhang" state=absent'

group模块

group模块用于对用户组管理

ansible web -m group -a 'name=mysql gid=306 system=yes'   //新建 mysql 组,gid=306
ansible web -m user -a 'name=lisi uid=306 system=yes group=mysql'   //新建用户lisi,uid=306,并加入到mysql组

copy模块

copy模块用于实现文件复制和批量下发文件。其中使用src来定义本地源文件路径,使用dest定义被管理主机文件路径,使用content则是通过指定信息内容来生成文件。注意,复制或者下发文件,一定时管理主机上有的文件,不要使用管理主机上不存在的文件或目录

批量下发、复制文件

批量下发文件时,可以同时指定文件的属组属主,文件权限等属性

ansible web -m copy -a 'src=/etc/fstab dest=/opt/fstab.bak owner=lisi group=mysql mode=600 backup=yes' -o
ansible web -m shell -a 'md5sum /opt/fstab.bak' -o   //验证下发功能

Ansible常用Ad-Hoc命令介绍

写入指定内容到文件

ansible web -m copy -a 'content="hello word!" dest=/opt/a.txt' -o
ansible web -m shell -a 'md5sum /opt/a.txt' -o

shell模块

shell模块可在被管理主机上运行命令,并支持风管道符等功能的复杂命令

ansible zhangsan -m shell -a 'echo abc123 | passwd --stdin zhangsan'   //免交互创建已有用户密码

file模块

file模块用来设置文件属性,其中使用path指定文件路径,使用src定义源文件路径,使用name或dest来替换创建文件的符号链接

设置文件权限

ansible web -m file -a 'owner=lisi group=mysql mode=644 path=/opt/a.txt' -o
ansible web -m shell -a 'ls -l /opt/a.txt'

Ansible常用Ad-Hoc命令介绍

设置链接文件

ansible web -m file -a 'path=/opt/fstab.link src=/etc/fstab state=link' -o    //src后的目录及文件都为和管理主机上所有

Ansible常用Ad-Hoc命令介绍

删除文件

ansible web -m file -a "path=/opt/a.txt state=absent" -o

创建文件

ansible web -m file -a "path=/opt/test state=touch" -o            //创建一个文件

yum模块

yum模块负责在被管理主机上安装与卸载软件包,可以使用本地yum仓库,或是在线yum源,如果选用本地yum仓库,则需为被管理主机搭建yum仓库。若是使用在线,则直接安装,本次测试采用在线安装,不搭建本地yum仓库。

安装软件包

ansible web -m yum -a 'name=httpd state=latest' -o   //在被管主机上安装最新版本httpd软件
ansible web -m shell -a 'rpm -qa httpd' -o           //查看软件包安装情况

Ansible常用Ad-Hoc命令介绍

卸载软件包

ansible web -m yum -a 'name=httpd state=absent' -o
ansible web -m shell -a 'rpm -qa httpd' -o

service模块

service模块用来控制管理服务的运行状态,其中,使用enablesd表示是否开机自启,取值为true或false;使用name定义服务名称;使用state指定服务状态,分别取值startd、stoped、restarted。

开启httpd服务

ansible web -m service -a 'enabled=true name=httpd state=started' -o
ansible web -m shell -a '/usr/bin/netstat -ntap | grep httpd'                          //查看服务启动是否成功
ansible web -a 'systemctl status httpd'                                                         //查看服务状态

Ansible常用Ad-Hoc命令介绍

script模块

script模块可以将本地脚本复制到被管理主机上进行运行。 注意,使用相对路径来指定脚本

编写简单的 shell 脚本

cd /opt
vim test.sh
#!/bin/bash
echo this is ansible test > /opt/ansible.txt
chmod +x test.sh

下发shell脚本执行

ansible web -m script -a 'test.sh'
ansible web -m shell -a '/usr/bin/cat /opt/ansible.txt'

Ansible常用Ad-Hoc命令介绍

setup模块

setup模块收集、查看被管主机的facts(facts是ansible采集被管理主机设备信息的一个功能)。每个被管理主机在接收并运行管理命令之前。都会将自己的相关信息(操作系统、IP地址等)发送给控制主机。

ansible web -m setup     //内容特别多就不贴图了

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Beginning ASP.NET 4 in C# and Vb

Beginning ASP.NET 4 in C# and Vb

Imar Spaanjaars / Wrox / 2010-3-19 / GBP 29.99

This book is for anyone who wants to learn how to build rich and interactive web sites that run on the Microsoft platform. With the knowledge you gain from this book, you create a great foundation to ......一起来看看 《Beginning ASP.NET 4 in C# and Vb》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具