ansible的常用模块和自定义模块

1. ansible命令集

ansible: 定义并运行简单任务。

ansible-config: 查看、编辑、管理ansible配置。

ansible-doc: 文档查看工具。

ansible-galaxy:共享和下载roles的工具。

ansible-inventory:查看inventory的信息。

ansible-playbook:执行playbook。

ansible-pull: 从仓库中拉去playbook。

ansible-vault: 文件加密工具。

ansible-console: repl控制台执行ansible任务。

2. ansible模块

ansible给我们提供了很多的常用模块, 我估计你自己想用的模块, 基本都可以找到, 我们在写功能的时候, 首先来查一下, 已经有很大大佬给我们写了很多模块了, 足够你使用了.

针对下面的模块, 我建议大家还是扫一眼, 万一以后用到呢, 其实找到下面的模块, 你知道它已经有了, 就没必要自己去写了.针对能用到的, 我都进行加粗处理了,大家扫一眼, 了解一下.

ansible 2.2.0.0ansible-doc -l

add_host 将主机(以及组)添加到ansible-playbook内存库存中

apk 管理apk包

apt 管理apt-packages

assemble 从片段组装配置文件

capabilities 管理Linux功能

command 在远程节点上执行命令

composer Dependency Manager for PHP

consul 在consul集群中添加,修改和删除服务。

consul_acl 操纵领事密钥和规则

consul_kv 处理consul集群的键/值存储中的条目。

consul_session 操纵consul会话将

copy 文件复制到远程位置

cron 管理cron.d和crontab条目。

cronvar 用crontabs管理变量

crypttab 加密的Linux块设备

debug 打印语句

docker 管理docker容器

docker_container 管理docker容器

docker_image 管理docker镜像。

docker_image_facts 检查docker镜像

docker_login 登录Docker注册表。

docker_network 管理Docker网络

docker_service 管理docker服务和容器。

docker_swarm_service 管理Docker网络

easy_install 安装Python库

facter 在远程系统上运行发现程序‘facter‘

fail 使用自定义消息时失败

fetch 从远程节点获取文件

file 设置文件的属性

filesystem 使块设备上的文件系统

find 根据特定条件返回文件列表

firewalld 使用firewalld

gem 管理Ruby gems将

get_url 文件从HTTP,HTTPS或FTP下载到节点

git 从git checkouts部署软件(或文件)

git_config 读取和写入git配置

github_hooks 管理github服务挂钩。

github_key 管理GitHub访问密钥。

github_release 与GitHub版本互动

gitlab_group 创建/更新/删除Gitlab组

gitlab_project 创建/更新/删除Gitlab项目

gitlab_user 创建/更新/删除Gitlab用户

gluster_volume 管理GlusterFS卷

group 添加或删除

group_by 组根据事实创建Ansible组

homebrew Homebrew的包管理器

homebrew_cask 安装/卸载自制垃圾桶。

homebrew_tap 点击Homebrew存储库。

honeybadger_deployment 通知Honeybadger.io有关应用程序部署的信息

hostname 管理主机名

htpasswd 管理用户文件以进行基本身份验证

include 包括播放或任务列表。

include_role 加载并执行角色

include_vars 在任务中动态加载文件中的变量。

influxdb_database 管理InfluxDB数据库

influxdb_retention_policy 管理InfluxDB保留策略

iptables 修改系统iptables

jenkins_job 管理jenkins作业

jenkins_plugin 添加或删除Jenkins插件

jira 在JIRA实例中创建和修改问题在

mail 发送电子邮件

mssql_db 从远程主机添加或删除MSSQL数据库。

mysql_db 从远程主机添加或删除MySQL数据库。

mysql_replication 管理MySQL复制

mysql_user 在MySQL数据库中添加或删除用户。

mysql_variables 管理MySQL全局变量

npm 管理node.js软件包

pacemaker_docker_ocf 管理Docker网络

pacemaker_service 管理Docker网络

pacemaker_vip 管理Docker网络

package 通用OS包

patch 使用GNU修补程序工具应用修补程序文件。

pause 暂停playbook执行

ping 尝试连接到主机,验证可用的python并在成功时返回“pong”。

pip 管理Python库依赖项。

redis 各种redis命令,slave和flush

selinux 更改

service 管理服务。

set_fact 从任务中设置主机事实

setup 收集有关远程主机的事实

shell 在节点中执行命令。

slurp 从远程节点中刷新文件

snmp_facts 使用SNMP检索设备的事实。

synchronize 使用rsync可以快速轻松地在手册中同步文件路径。

sysctl 管理sysctl.conf中的条目。

systemd 管理服务。

template 将文件模板到远程服务器。

timezone 配置时区设置

twilio 通过Twilio向手机发送短信。

typetalk 发送消息到typetalk

user 管理用户帐户

wait_for 在继续之前等待条件。

yum 使用‘yum‘包管理器管理包

yum_repository 添加和删除YUM存储库

zabbix_group Zabbix主机组创建/删除

zabbix_host Zabbix主机创建/更新/删除

zabbix_hostmacro Zabbix主机宏创建/更新/删除

zabbix_maintenance 创建Zabbix维护窗口

zabbix_screen Zabbix屏幕创建/更新/删除

docker 管理docker容器 上启用加速模式

windows相关

win_acl 为系统用户或组设置文件/目录权限。

win_acl_inheritance 更改ACL继承

win_chocolatey 使用chocolatey安装软件包

win_command 在远程Windows节点上执行命令将

win_copy 文件复制到Windows主机上的远程位置。

win_dotnet_ngen 在.NET更新后运行ngen以重新编译DLL

win_environment 在Windows主机上修改环境变量。

win_feature 在Windows Server上安装和卸载Windows功能

win_file 创建,触摸或删除文件或目录。

win_file_version 获取DLL或EXE文件构建版本

win_firewall_rule Windows防火墙自动化

win_get_url 从给定URL获取文件

win_group 添加和删除本地组

win_iis_virtualdirectory 在IIS中配置虚拟目录。

win_iis_webapplication 配置IIS Web应用程序。

win_iis_webapppool 配置IIS Web应用程序池。

win_iis_webbinding 配置IIS网站。

win_iis_website 配置IIS网站。

win_lineinfile 确保特定行位于文件中,或使用反向引用的正则表达式替换现有行。

win_msi 安装和卸载Windows MSI文件

win_nssm NSSM - 非吸吮服务管理器

win_owner 集所有者

win_package 从本地文件系统或URL安装/卸载可安装程序包

win_ping 经典ping模块的Windows版本。

win_reboot 重启Windows机器

win_regedit 添加,编辑或删除注册表项和值

win_regmerge 将注册表文件的内容合并到Windows注册表中

win_robocopy 使用Robocopy同步两个目录的内容。

win_scheduled_task 管理计划任务

win_service 管理Windows服务

win_share 管理Windows共享

win_shell 在目标主机上执行shell命令。

win_stat 返回有关Windows文件的信息将文件

win_template 模板发送到远程服务器。

win_timezone 设置Windows机器时区

win_unzip 在Windows节点上解压缩压缩文件和存档

win_updates 下载并安装Windows更新

win_uri 与webservices交互。

win_user 管理本地Windows用户帐户

win_webpicmd 使用Web Platform Installer安装程序包命令行

3. ansible自定义module

Ansible提供了许多模块实用程序,它们提供了在开发自己的模块时可以使用的辅助功能。basic.py模块为程序提供访问Ansible库的主要入口点,所有Ansible模块必须至少从basic.py导入: from ansible.module_utils.basic import *

AnsibleModule 提供和很多通用的函数来处理返回值, 分析参数并允许你检查输入:

  • 成功返回
    module.exit_json(changed=True, something_else=12345)

  • 失败退出
    module.fail_json(msg="Something fatal happened")

Ansible组成:

tree /etc/ansible/

/etc/ansible/

├── ansible.cfg # ansible的配置文件

├── hosts # ansible的主仓库 用来存储需要管理的远程主机的相关信息

└── roles

首先先创建一个存放ansible自定义模板的路径:

mkdir /usr/share/ansible 自定义可以根据自己的环境进行选择或创建

然后在ansible配置文件/etc/ansible/ansible.cfg开放自定义模板路径的配置:

Library=/usr/share/ansible

1. 不带参数

无参数ansible自定模块实例:an_demo.py

from ansible.module_utils.basic import *

module = AnsibleModule(argument_spec = dict())

result = dict(echo=‘pong’)

module.exit_json(**result)

2. 带参数

带参ansible自定义模块实例:an_param_demo.py

from ansible.module_utils.basic import *
module =AnsibleModule(argument_spec = dict(arg = dict(required = True)))
param = module.params[‘arg’]
if param == ‘1’:    
 result = dict(echo = ‘success’)    
 module.exit_json(**result)
else:    
 result = dict(echo = ‘failed’,msg= 0)    
 module.fail_json(**result)

3. playbook中自定义module

在当前目录下面创建一个library的目录, 会在本playbook中自动加载进入