接上篇,还是一些基础模块的使用,这里主要介绍的是系统模块的使用。

下面例子都进行过相关的实践,从而可以直接进行使用相关的命令。

3、用户模块的使用

用户模块主要用来管理用户账号和用户的属性(对远程主机用户进行批量管理)。

用户模块依赖的指令为useradd,userdel,usermod

参数

必填

默认值

选项

说明

Append

No

Yes/no

如果没有指定group,append设定为yes,那么会添加到用户同名组;append设定为no,那么会添加到user组。如果指定了group,那么都会添加在指定的group组

Comment

用户的备注信息

Force

No

Yes/no

当状态为absent的时候,相当于userdel -force

generate_ssh_key

No

Yes/no

是否生成秘钥

Group

可选的,设定用户的主组

Groups

用逗号分隔的组,当groups设定为空的时候,那么会移除除了主组的其他所有组

Home

可选的,设定为用户的home目录

Login_class

可选的,设定用户的登录类 FreeBSD, OpenBSD and NetBSD systems.

Name

用户创建,移除,修改

Move_home

No

Yes/no

如果使用了选项home=设置为yes,那么会将用户家目录移到不存在的home目录中

Non_unique

No

Yes/no

可选的,当使用-u选项的时候,将用户的uid设置为non_unique

Password

设定用户的密码

Remove

No

Yes/no

当使用状态为state=absent的时候,差不多和userdel --remove(删除所有信息)

Shell

设定用户的shell

Ssh_key_bits

2048

设定秘钥的位数

Ssh_key_comments

¥HOSTHOME

Ssh key备注信息

Ssh_key_file

.sha/id_rsa

秘钥的文件名

ssh_key_passphrase

Ssh秘钥的密码

Ssh_key_type

Rsa

Ssh秘钥的类型

State

Present

Present

Absent

新增删除

System

No

Yes/no

创建为系统账号,不会改变已经存在的用户

Uid

设定为用户的uid

Update_password

Always

Always

On_create

Always当用户密码不同,会修改,是否需要修改密码

3.1 添加用户

[root@ansibleserver ~]# ansible pythonserver -m user -a "name=kelly group=kelly uid=555 comment='kelly' state=present"

SSH password:

192.168.1.60 | success >> {

"changed": true,

"comment": "kelly",

"createhome": true,

"group": 501,

"home": "/home/kelly",

"name": "kelly",

"shell": "/bin/bash",

"state": "present",

"system": false,

"uid": 555

}

添加用户,指定用户名name,指定用户主组kelly,设定用户uid为555 ,设定备注信息

3.2 添加用户使用append

[root@ansibleserver ~]# ansible pythonserver -m user -a "name=kelly shell=/bin/bash groups=kelly,kel append=yes"

SSH password:

192.168.1.60 | success >> {

"changed": true,

"comment": "",

"createhome": true,

"group": 100,

"groups": "kelly,kel",

"home": "/home/kelly",

"name": "kelly",

"shell": "/bin/bash",

"state": "present",

"system": false,

"uid": 501

}

添加用户,将用户添加在组kelly和kel中,指定shell为/bin/bash,然后将用户添加组user中

3.3 删除用户

[root@ansibleserver ~]# ansible pythonserver -m user -a "name=kelly state=absent remove=yes"

SSH password:

192.168.1.60 | success >> {

"changed": true,

"force": false,

"name": "kelly",

"remove": true,

"state": "absent"

}

将用户强制删除

3.4 新建用户创建sshkey

[root@ansibleserver ~]# ansible pythonserver -m user -a "name=kelly generate_ssh_key=yes ssh_key_bits=2048 ssh_key_file=.ssh/id_rsa"

SSH password:

192.168.1.60 | success >> {

"changed": true,

"comment": "",

"createhome": true,

"group": 501,

"home": "/home/kelly",

"name": "kelly",

"shell": "/bin/bash",

"ssh_fingerprint": "2048 cd:18:dc:17:3b:ac:d8:ec:95:15:39:26:01:3d:17:d6 /home/kelly/.ssh/id_rsa.pub (RSA)",

"ssh_key_file": "/home/kelly/.ssh/id_rsa",

"ssh_public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAs6vB5rR5KAkWGbCmnBFBCLTuD8W3Gu2ehGtlkS9ObCC3uANHG7l80g3tfUl9k3GTh1a+vlAq2XKIKgFSnqQwitiX7WgyL4JzoWHtt0do2JKf0Zh+i7RgR6fZpF48wpuuuZnFXs9WaaHJDhWjp8t7dMDcCI1TxDCCmeYO7bxQdnN8FsxQSQLr5L0IrVBb1avE/+oVCJ72LEmJKGBNo6XQXwC2sA3o0dXEYQwhaE/ulJrPbLbXRJcZmhhIW5Rviu1J3hNOC36+9WpzV7luaZ9QUZdhuvuN3LlXSELWVoHciiGct+6h4zih/aZnmEBCqoD//cobBsuRN6PDJRz+DxRWLw==
ansible-generated",

"state": "present",

"system": false,

"uid": 501

}

创建用户,设定sshkey等属性

4、 hostname模块使用

hostname模块主要用来修改主机的名称。

参数

必填

默认

选择

注释

Name

主机名称

4.1 修改主机名称

[root@ansibleserver ~]# ansible pythonserver -m hostname -a "name=python"

SSH password:

192.168.1.60 | success >> {

"changed": true,

"name": "python"

}

在查看的时候,主要查看文件/etc/sysconfig/network,重启之后才能生效

5、 ping模块的使用

ping模块主要是无意义的测试模块,主要用来检查ansible是否可以用的模块以及python是否配置好的,在playbook中基本不会使用,在能成功连接之后,总是返回结果pong

[root@ansibleserver ~]# ansible all -m ping

SSH password:

ansiblemoniter | success >> {

"changed": false,

"ping": "pong"

}

6、定时任务管理模块使用

主要是用来对定时任务进行调度,定时任务模块会包含一句描述信息,格式如下:

"#Ansible: <name>"

name对应的为模块传递过去的参数,主要用来给以后ansible进行操作的时候,查看相关的状态或者检查相关状态

依赖的模块为cron

参数

必填

默认

选择

说明

Backup

Yes/no

如果yes,那么在修改之后会进行备份,备份的路径在backup_file

Cron_file

如果设置了,那么在cron.d中使用此文件替代单独用户的crontab,在使用此选项的时候,必须使用user选项

Day

Hour

小时 ( 0-23, *, */2, etc )

Job

需要执行的命令,必须状态为present

Minute

分 ( 0-59, *, */2, etc )

Month

月( 1-12, *, */2, etc )

Name

任务的描述

Reboot

No

Yes/no

重启后是否需要执行

Special_time

reboot

yearly

annually

monthly

weekly

daily

hourly

特定的执行时间

State

Present

Present

Absent

启用或停用任务

User

Root

执行任务的用户

Weekday

每一周的哪天进行运行(0-6 for Sunday-Saturday, *, etc)

6.1 新增一个定时任务

[root@ansibleserver ~]# ansible pythonserver -m cron -a "name=check minute=5 job='crontab -l >>/root/123'"

SSH password:

192.168.1.60 | success >> {

"changed": true,

"jobs": [

"check"

]

}

新增一个任务,每五分钟执行一次,任务名称为check

6.2 删除定时任务

[root@ansibleserver ~]# ansible pythonserver -m cron -a "name=check state=absent"

SSH password:

192.168.1.60 | success >> {

"changed": true,

"jobs": []

}

删除刚刚新建的定时任务

6.3 新建一个cron文件

[root@ansibleserver ~]# ansible pythonserver -m cron -a "name='for test' weekday='2' minute='0' hour=12 user='root' job='cat /etc/passwd >/root/111' cron_file='test ansible'"

SSH password:

192.168.1.60 | success >> {

"changed": true,

"cron_file": "test ansible",

"jobs": [

"for test"

]

}

新增一个任务,在目录/etc/cron.d/目录中,文件名称为test ansible,用户为root

6.4 删除一个cron文件

[root@ansibleserver ~]# ansible pythonserver -m cron -a "name='for test' cron_file='test ansible' state=absent"

SSH password:

192.168.1.60 | success >> {

"changed": true,

"cron_file": "test ansible",

"jobs": []

}

删除上面新建的cron文件。

7、 setup模块

这个模块在playbook中自动被查找的,从而得到远程主机的相关信息,可以作为变量使用。

参数

必填

默认

选择

说明

Fact_path

/etc/ansible/facts.d

Fact的路径

Filter

*

过滤串

7.1 收集fact并且进行保存

ansible pythonserver -m setup --tree /tmp/facts

执行之后,会显示相关的fact,并且在/tmp/facts中会保存fact信息,如下:

[root@ansibleserver tmp]# ls -l /tmp/facts/

total 12

-rw-r--r-- 1 root root 8990 Jan 18 13:16 192.168.1.60

使用--tree选项,在分类的时候,会根据主机的名称进行分类

7.2 收集内存信息并输出

[root@ansibleserver tmp]# ansible pythonserver -m setup -a "filter=ansible_*_mb"

SSH password:

192.168.1.60 | success >> {

"ansible_facts": {

"ansible_memfree_mb": 746,

"ansible_memtotal_mb": 996,

"ansible_swapfree_mb": 2015,

"ansible_swaptotal_mb": 2015

},

"changed": false

}

使用过滤字符串,从而进行了相关的匹配,得到相关的内存信息

7.3 收集主机网卡信息

[root@ansibleserver tmp]# ansible pythonserver -m setup -a "filter=ansible_eth[02]"

SSH password:

192.168.1.60 | success >> {

"ansible_facts": {

"ansible_eth0": {

"active": true,

"device": "eth0",

"ipv4": {

"address": "192.168.1.60",

"netmask": "255.255.255.0",

"network": "192.168.1.0"

},

"ipv6": [

{

"address": "fe80::a00:27ff:fee5:e8a8",

"prefix": "64",

"scope": "link"

}

],

"macaddress": "08:00:27:e5:e8:a8",

"module": "e1000",

"mtu": 1500,

"promisc": false,

"type": "ether"

}

},

"changed": false

}

收集特定的网卡信息

ansible定时任务模块和用户组模块使用的更多相关文章

  1. Ansible安装部署以及常用模块详解

    一.  Ansible 介绍Ansible是一个配置管理系统configuration management system, python 语言是运维人员必须会的语言, ansible 是一个基于py ...

  2. ansible环境部署及常用模块总结 - 运维笔记

    一.  Ansible 介绍Ansible是一个配置管理系统configuration management system, python 语言是运维人员必须会的语言, ansible 是一个基于py ...

  3. Ansible安装部署及常用模块详解

    Ansible命令使用 Ansible语法使用ansible <pattern_goes_here> -m <module_name> -a <arguments> ...

  4. ansible学习基础知识和模块(一)

    基础知识补充: 常用自动化运维工具 Ansible:使用python来开发的,无需设置Agentless(代理),一般管理几百台.与ssh的方式也不一样,ssh是基于c/s模式(客户端+服务器)来使用 ...

  5. ansible服务模块和组模块使用

    本篇文章主要是介绍ansible服务模块和组模块的使用. 主要模块为ansible service module和ansible group moudle,下面的内容均是通过实践得到,可以直接运行相关 ...

  6. CentOS7Linux中自动化运维工具Ansible的安装,以及通过模块批量管理多台主机

    使用自动化运维工具Ansible集中化管理服务器 Ansible概述 Ansible是一款为类Unix系统开发的自由开源的配置和自动化工具.它用Python写成,类似于saltstack和Puppet ...

  7. ansible执行shell模块和command模块报错| FAILED | rc=127 >> /bin/sh: lsof: command not found和| rc=2 >> [Errno 2] No such file or directory

    命令: ansible -i hosts_20 st  -m shell -a 'service zabbix_agentd star'  -K --become ansible -i hosts_2 ...

  8. Ansible基础配置与常用模块使用

    环境介绍: Ansible服务端IP:192.168.2.215 Ansible客户端IP:192.168.2.216.192.168.2.218.192.168.2.113   一.创建Ansibl ...

  9. Ansible 开发调试 之【模块调试】

    本地调试 需要安装jinja2 库 yum -y install python-jinja2 使用官方提供的测试脚本调试 git clone git://github.com/ansible/ansi ...

随机推荐

  1. java Cache框架

    Cache框架乱炖   各类开源的缓存解决方案 JBossCache/TreeCacheJBossCache是一个复制的事务处理缓存,它允许你缓存企业级应用数据来更好的改善性能.缓存数据被自动复制,让 ...

  2. Spring AOP术语

    1.AOP术语     1)连接点(Joinpoint)     程序执行的某个特定位置:如类开始初始化前.类初始化后.类某个方法调用前.调用后.方法抛出异常后.一个类或一段程序代码拥有一些具有边界性 ...

  3. Hadoop、Pig、Hive、Storm、NOSQL 学习资源收集

    (一)hadoop 相关安装部署 1.hadoop在windows cygwin下的部署: http://lib.open-open.com/view/1333428291655 http://blo ...

  4. 卷积神经网络CNN全面解析

    卷积神经网络(CNN)概述 从多层感知器(MLP)说起 感知器 多层感知器 输入层-隐层 隐层-输出层 Back Propagation 存在的问题 从MLP到CNN CNN的前世今生 CNN的预测过 ...

  5. Hadoop2.2.0 安装笔记

    在Youtube上找到靠谱的教程:http://www.youtube.com/watch?v=WN2tJk_oL6E 同时把作者的教程下载下来放在百度云盘上了:http://pan.baidu.co ...

  6. TestNG超详细教程

    testNG官网:http://testng.org/doc/download.html howtodoinjava.com里的testNG教程,简单详细:http://howtodoinjava.c ...

  7. 了解thinkphp(二)

    ThinkPHP的核心文件: Library文件夹下的Think文件夹目录 ThinkPHP的入口文件是: ThinkPHP.php , 我们在创建项目时都要引入这个入口文件!!! 一 , 项目的部署 ...

  8. Introduction

    http://www.entityframeworktutorial.net/EntityFramework5/entity-framework5-introduction.aspx Basics o ...

  9. HTML发展历史

    概述 HTML从1993到如今的发展,同时针对其以后的发展进行评测. HTML 语言作为网络语言标准规范,在计算机的发展史中有着不可或缺的地位.在HTML 上的成就也决定着一个时代的发展. 1.HTM ...

  10. Jqgrid入门-Jqgrid格式化数据(九)

    上一章已经说明了在Jqgrid中如何对数据分组,这一章主要探讨如何格式化Jqgrid中的数据.何谓格式化呢?举个例子,比如对时间格式化处理,去掉后面的时分秒:对数字进行处理,加上千分位分隔符,小数的保 ...