前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >03-Ansible模块

03-Ansible模块

原创
作者头像
小朋友呢
修改2020-01-13 11:13:58
1K0
修改2020-01-13 11:13:58
举报
文章被收录于专栏:小朋友学云计算

环境

代码语言:txt
复制
[root@workstation ansible]# cat /etc/ansible/hosts 
[myhosts]
192.168.1.110
192.168.1.111

模块用法

模块

解释

command

默认模块,没有启用 shell ,所有shell 相关特性命令无法使用,例如 < > | &

raw

没有 chdir create remove 等参数,能执行大部分操作

shell

启动 /bin/sh 运行命令,可以执行所有操作

copy

从本机路径复制一个文件到远程目标主机路径下,可以指定权限

shell模块

使用带有别名的命令试试

代码语言:txt
复制
[root@ansible /]# ansible myhosts -m shell -a 'll'

192.168.1.111 | FAILED | rc=127 >>
/bin/sh: ll: 未找到命令non-zero return code

192.168.1.110 | FAILED | rc=127 >>
/bin/sh: ll: 未找到命令non-zero return code

定义在~/.bashrc~/.bash_profile中的环境变量shell模块由于没有加载,所以无法识别;

如果需要使用自定义的环境变量,就需要在最开始,执行加载自定义脚本的语句.

如果命令比较短可以一行写完

代码语言:txt
复制
ansible myhosts -m shell -a "df -hT|sed '1d'|head -1"

script模块

如果命令比较多可以写成一个脚本,然后使用ansible把这个脚本推送到远程主机执行

代码语言:txt
复制
cat /opt/shell/root.sh
#!/bin/bash
for i in {1..5}
do
	user="haha$RANDOM"
	useradd $user
	echo "shenqi" |passwd --stdin $user
done

使用script模块执行root.sh脚本

代码语言:txt
复制
ansible myhosts -m script -a "/opt/shell/root.sh"

file模块

创建一个空文件

文件名叫/tmp/haha,权限0644,所有者为apache,所属组wheel

代码语言:txt
复制
ansible myhosts -m file -a "path=/tmp/haha mode=0644 owner=apache group=wheel state=touch"

创建一个文件夹

文件夹叫/tmp/lala,权限2775(相当于sgid)

代码语言:txt
复制
ansible myhosts -m file -a "path=/tmp/lala mode=2755 state=directory"

更改文件/文件夹的权限

更改/tmp/haha权限为777,既可以是文件也可以是目录,不用加state

代码语言:txt
复制
ansible myhosts -m file -a "path=/tmp/haha mode=0777"

删除一个文件/目录

把/tmp/haha给删除,如果指定的目录也可以被删除

代码语言:txt
复制
ansible dev -m file -a "path=/tmp/haha state=absent"

创建一个链接文件

path:要创建的链接文件,src:来自哪里,state:设置成link

代码语言:txt
复制
ansible dev -m file -a "path=/tmp/hosts src=/etc/hosts state=link"

stat模块

显示远程主机文件的超级详细的信息

代码语言:txt
复制
ansible myhosts -m stat -a "path=/tmp/hosts"

yum模块

name

软件的名称

state

状态

latest,present,installed,

这三个都代表的是安装

removed,absent

卸载

安装http服务

代码语言:txt
复制
ansible myhosts -m yum -a "name=httpd state=latest"

get_url模块

代码语言:txt
复制
ansible myhosts -m get_url -a "url=http://mirrors.aliyun.com/repo/Centos-7.repo dest=/tmp/ mode=0440 force=yes"

如果force=yes,当下载文件时,如果所下的内容和原目录下的文件内容不一样,则替换原文件,如果一样,就不下载了。

如果为“否”,则仅在目标不存在时才下载文件。 一般来说,只有小型本地文件才应该为“是”。

在0.6之前,该模块表现为默认为“是”。

con模块

每天的14.30分执行一下echo hello

代码语言:txt
复制
ansible myhosts -m cron -a "name='say hello' minute='30' hour='14' job='/usr/bin/echo hello'"

service模块

重启服务

重启chronyd服务,并且开机启动

代码语言:txt
复制
ansible myhosts -m service -a "name=chronyd state=restarted enabled=yes"

常用参数

  1. name参数:此参数用于指定需要操作的服务名称,比如 nginx,httpd。
  2. state参数:此参数用于指定服务的状态,

比如,我们想要启动远程主机中的httpd,则可以将 state 的值设置为 started;

如果想要停止远程主机中的服务,则可以将 state 的值设置为 stopped。

此参数的可用值有 started、stopped、restarted(重启)、reloaded。

enabled参数:

  • 此参数用于指定是否将服务设置为开机 启动项,设置为 yes 表示将对应服务设置为开机启动,设置为 no 表示不会开机启动。
  • 可以使用systemctl list-unit-files|grep enable 查看开机启动的服务

注:想使用service模块启动服务,被启动的服务,必须可以使用service 命令启动或关闭

sysctl模块

开启路由转发

代码语言:txt
复制
ansible -i /etc/ansible/hosts myhosts -m sysctl -a "name=net.ipv4.ip_forward value=1 reload=yes"

value设置它的值

reload 设置为yes就相当于sysctl -p

user模块

参数

name

用户名

group

用户的基本组

groups

指定用户的附加组,多次指定会覆盖

append

在原来的附加组基础上再加入新的组

shell

用户默认登录的shell

home

用户的家目录

uid

用户的id

state

用户状态:present目前、存在、创建,absent表示删除此用户

remove

yes|no 如果等于yes会连带删除用户的家目录,默认是no

password

指定用户的密码,但不能是明文,相当于/etc/shadow文件中密码字段

举例

1.添加一个duolameng用户

代码语言:txt
复制
ansible myhosts -m user -a "name=duolameng state=present"

[root@ansible ~]# ansible myhosts -m shell -a "id duolameng"
192.168.1.110 | SUCCESS | rc=0 >>
uid=1011(duolameng) gid=1011(duolameng) 组=1011(duolameng)

192.168.1.111 | SUCCESS | rc=0 >>
uid=1008(duolameng) gid=1008(duolameng) 组=1008(duolameng)

2.删除duolameng用户,但不删除家目录

代码语言:txt
复制
ansible myhosts -m user -a "name=duolameng state=absent"

3.删除名为duolameng的用户,同时会删除duolameng用户的家目录等信息,如果已经不存在duolameng的用户,则不做任何操作。

代码语言:txt
复制
ansible myhosts -m user -a "name=duolameng state=absent remove=yes"

4.指定duolameng用户的主组为admuser,admuser需要提前存在

代码语言:txt
复制
ansible myhosts -m user -a "name=duolameng group=admuser"

5.把duolaameng用户加到组root,whell组里面去,并不覆盖原来的附加组

代码语言:txt
复制
ansible myhosts -m user -a "name=duolameng groups=root,wheel append=yes"

6.设置duolameng用户的密码为ononon

方法1:

使用python的crypt模块

代码语言:txt
复制
使用python的crypt模块
[root@ansible ~]#python
>>> import crypt
>>> crypt.crypt('ononon')
'$6$pRfiGx4eb6S3rUND$/4Rr9M8Z6TLZXnW5SzPj7PgqQDy6M5PiZTNt7ETKDim4i4e2wc0hoGmu.XsjN8Lp5FSG7EqXixmGgAS8fUC2P1'

设置duolameng的密码

代码语言:txt
复制
ansible myhosts -m user -a "name=duolameng password=$6$pRfiGx4eb6S3rUND$/4Rr9M8Z6TLZXnW5SzPj7PgqQDy6M5PiZTNt7ETKDim4i4e2wc0hoGmu.XsjN8Lp5FSG7EqXixmGgAS8fUC2P1"

方法2:

代码语言:txt
复制
ansible all -m user -a "name=duolameng password={{ 'shenqi' | password_hash('sha512') }}"

group模块

参数

gid

组id

name

组名称

state

Present创建Absent删除

system

yes|no 是否为系统组

举例

创建一个组为adminuser,gid为666

代码语言:txt
复制
ansible myhosts -m group -a "name=adminuser state=present gid=666 system=yes"

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 环境
  • 模块用法
  • shell模块
  • script模块
  • file模块
    • 创建一个空文件
      • 创建一个文件夹
        • 更改文件/文件夹的权限
          • 删除一个文件/目录
            • 创建一个链接文件
            • stat模块
            • yum模块
            • get_url模块
            • con模块
            • service模块
              • 重启服务
                • 常用参数
                • sysctl模块
                • user模块
                  • 参数
                    • 举例
                    • group模块
                      • 参数
                        • 举例
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档