ansible模块

·  阅读 109

「这是我参与11月更文挑战的第27天,活动详情查看:2021最后一次更文挑战

ansible的临时命令及常用模块分析

执行ansible命令之后,返回的颜色代表的含义
绿色:执行成功并且不需要做改变的操作
黄色:执行成功并且对目标主机做变更
红色:执行失败

1 command 模块

ansiblede 默认模块 ansible webserve -m command -a 'xxxxx'

-a后面跟对应的linux命令,虽然很强大,但是对于一些复杂的linux命令不支持,如管道符、导出符等

2 shell模块

类似command模块,都是操作Linux命令的模块,比command模块强大,支持很多linux命令

ansible webserve -m shell -a 'echo HOSTNAME'

3 script模块

可以用来执行远程主机上的bash脚本,注意是远程主机

ansible webserve -m script -a /data/xxx.sh

4 copy模块

从主控端复制文件到被控端

ansible webserve -m copy -a "src=源路径 dest=目标路径 "

目标路径后面还可以跟一些参数,比如允许访问的权限,管理的用户组等

5 fetch模块

从远程主机拉取文件到ansible端

ansible webserve -m fetch -a 'src=远程主机路径 dest=ansible路径'

6 file模块

对文件属性进行设置

ansible webserve -m file -a 'path=路径/文件名 设置参数'

后面可以跟一些设置的参数信息

7 unarchive模块

解包解压缩

  • 将ansible主机上的压缩包传到远程主机之后解压缩到特定目录,设置copy=yes
  • 将远程主机某个压缩文件解压缩到指定路径,设置copy=no

常见参数

  • copy:默认为yes,当copy=yes,拷贝的文件是从ansible主机复制到远程主机上,如果设置为copy=no,会在远程主机上寻找src源文件
  • remote_src:和copy功能一样且互斥,yes表示在远程主机,不在ansible主机,no表示文件在ansible主机上
  • src:源路径,可以是ansible主机上的路径,也可以是远程主机上的路径,如果是远程主机上的路径,则需要设置copy=no
  • dest:远程主机上的目标路径
  • mode:设置解压缩后的文件权限

ansible webserve -m unarchive -a 'src=文件路径 dest=解压缩路径'

8 archive模块

打包压缩

ansible webserve -m archive -a 'path=需要打包的文件夹 dest=指定压缩文件存放路径及压缩文件名 '

后面可以跟其他参数

9 hostname模块

管理主机名

ansible webserve -m hostname -a "name=主机名"

10 cron模块

设置定时执行的任务

支持时间:minute,hour,day,month,weekday

ansible websrvs -m cron -a "minute=*/5 job='/usr/sbin/ntpdate 172.20.0.1 &>/dev/null' name=Synctime"

11 yum模块

管理软件包,如下载等,注意:只支持RHEL,CentOs,fedora,不支持ubuntu等其他版本(使用的其他下载源)

ansible webserve -m yum -a 'name=httpd state=present'

state参数,present表示安装,absent表示删除

12 service模块

管理服务,比如重启,关闭,启动等

ansible webserve -m service -a 'name=httpd state=started enabled=yes'

注意后面的参数信息,name表示服务名,state表示操作的状态

13 user模块

管理用户信息

ansible webserve -m user -a 'name=user1 comment="first user" uid=2048 home=/app/user1 group=root

注意后面的参数信息name表示管理的用户名,comment表示描述,uid表示用户的唯一标识信息,home标识用户的根目录信息,group标识用户归属于哪个组

14 group模块

管理组信息

ansible webserve -m group -a 'name=nginx gid=88 system=yes'

name表示组名,git标识组,system

15 lineinfile模块

这个,,,,看不懂啊

16 replace模块

这个,也看不懂啊

17 setup模块

获取主机信息,如获取某某软件的版本信息等

ansible webserve -m setup -a "filter=ansible_hostname"

ansible操作playBook

Hosts:运行执行任务(task)的目标主机 remote_user:在远程主机上执行任务的用户 tasks:任务列表 handlers:任务,与tasks不同的是只有在接受到通知时才会被触发 templates:使用模板语言的文本文件,使用jinja2语法。 variables:变量,变量替换{{ variable_name }}

模板

---
- hosts: webserve
  remote_user: root
  
  tashs:
   - name: 该任务的名字
     ping: 这个ping可以是任意下面执行的模块名
     remote_user: 其中操作的用户信息
     sudo: 是否切换用户
     xxxxxxxxx
复制代码

案例

---
- hosts: websrvs
  remote_user: root
  tasks:
    - name: "安装Apache"
      yum: name=httpd
    - name: "复制配置文件"
      copy: src=/tmp/httpd.conf dest=/etc/httpd/conf/
    - name: "复制配置文件"
      copy: src=/tmp/vhosts.conf dest=/etc/httpd/conf.d/
    - name: "启动Apache,并设置开机启动"
      service: name=httpd state=started enabled=yes
复制代码

运维派企业案例信息

ansible的roles(批量playBook的集合)

附录

1. 命令

# 显示模块的帮助信息
ansible-doc [option] [module...]
ansible-doc ping

-s 可以显示简洁信息
ansible-doc -s ping
复制代码

2. linux命令

# 生成秘钥对
ssh-keygen
# 然后一直回车

# 复制文件到另一个主机上
#在本机135主机向137传输:
scp 本机文件路径 另一台账号@192.168.60.137:另一台储存路径
 
#在137主机,从135拉取:
scp 远程用户名@192.168.60.153:文件的绝对路径 本地Linux系统路径
复制代码
分类:
后端
标签: