本文共 6694 字,大约阅读时间需要 22 分钟。
ansible 模块
是一个开源IT配置管理和自动化平台。 它使用人类可读的YAML模板,因此用户可以对重复性任务进行编程以自动执行,而无需学习高级编程语言。
Ansible是无代理的,这意味着它管理的节点不需要在其上安装任何软件。 这样可以消除潜在的安全漏洞,并使整体管理更加顺畅。
Ansible 是可以在Ansible剧本中使用的独立脚本。 剧本由戏剧组成,而戏剧由任务组成。 如果您是Ansible的新手,这些概念可能会让人感到困惑,但是随着您开始编写和使用更多的剧本,它们将变得越来越熟悉。
Ansible具有三个主要文件,您需要考虑:
有一个适用于大多数流行软件包管理器的模块,例如DNF和APT,使您可以在系统上安装任何软件包。 功能完全取决于软件包管理器,但是通常这些模块可以安装,升级,降级,删除和列出软件包。 相关模块的名称很容易猜到。 例如,DNF模块是 ,旧的YUM模块(要求与Python 2兼容)是 ,而APT模块是 ,Slackpkg模块是 ,依此类推。
范例1:
- name : install the latest version of Apache and MariaDB dnf : name : - httpd - mariadb-server state : latest
这将安装Apache Web服务器和MariaDB SQL数据库。
- name : Install a list of packages yum : name : - nginx - postgresql - postgresql-server state : present
这将安装软件包列表,并帮助下载多个软件包。
安装软件包后,需要一个模块来启动它。 该使您可以启动,停止和重新加载已安装的软件包。 这非常方便。
- name : Start service foo, based on running process /usr/bin/foo service : name : foo pattern : /usr/bin/foo state : started
这将启动服务foo 。
- name : Restart network service for interface eth0 service : name : network state : restarted args : eth0
这将重新启动接口eth0的网络服务。
将文件从本地或远程计算机复制到远程计算机上的某个位置。
- name : Copy a new "ntp.conf file into place, backing up the original if it differs from the copied version copy: src: /mine/ntp.conf dest: /etc/ntp.conf owner: root group: root mode: '0644' backup: yes
- name : Copy file with owner and permission, using symbolic representation copy : src : /srv/myfiles/foo.conf dest : /etc/foo.conf owner : foo group : foo mode : u=rw,g=r,o=r
在执行过程中打印语句,对于调试变量或表达式而无需停止剧本很有用。
- name : Display all variables/facts known for a host debug : var : hostvars [ inventory_hostname ] verbosity : 4
这将显示清单文件中定义的主机的所有变量信息。
- name : Write some content in a file /tmp/foo.txt copy : dest : /tmp/foo.txt content : | Good Morning! Awesome sunshine today. register : display_file_content - name : Debug display_file_content debug : var : display_file_content verbosity : 2
这将注册复制模块输出的内容,并且仅在将详细程度指定为2时才显示它。例如:
ansible-playbook demo.yaml -vv
管理文件及其属性。
- name : Change file ownership, group and permissions file : path : /etc/foo.conf owner : foo group : foo mode : '0644'
这将创建一个名为foo.conf的文件,并将权限设置为0644 。
- name : Create a directory if it does not exist file : path : /etc/some_directory state : directory mode : '0755'
这将创建一个名为some_directory的目录,并将权限设置为0755 。
管理文本文件中的行。
- name : Ensure SELinux is set to enforcing mode lineinfile : path : /etc/selinux/config regexp : '^SELINUX=' line : SELINUX=enforcing
这将设置SELINUX = enforcing的值。
- name : Add a line to a file if the file does not exist, without passing regexp lineinfile : path : /etc/resolv.conf line : 192.168.1.99 foo.lab.net foo create : yes
这将在resolv.conf文件中添加IP和主机名的条目。
管理存储库的git checkout,以部署文件或软件。
# Example Create git archive from repo - git : repo : https://github.com/ansible/ansible-examples.git dest : /src/ansible-examples archive : /tmp/ansible-examples.zip
- git : repo : https://github.com/ansible/ansible-examples.git dest : /src/ansible-examples separate_git_dir : /src/ansible-examples.git
这将用一个单独的Git目录克隆一个仓库。
(最早在Ansible 2.7中可用)提供了一种平台无关的方式,可通过network_cli连接插件将基于文本的配置推送到网络设备。
- name : commit with comment cli_config : config : set system host-name foo commit_comment : this is a test
这将设置交换机的主机名,并以提交消息退出。
- name : configurable backup path cli_config : config : "{ { lookup('template', 'basic/config.j2') }}" backup : yes backup_options : filename : backup.cfg dir_path : /home/user
这会将配置备份到其他目标文件。
创建一个或多个文件的压缩存档。 默认情况下,假定目标上存在压缩源。
- name : Compress directory /path/to/foo/ into /path/to/foo.tgz archive : path : /path/to/foo dest : /path/to/foo.tgz
- name : Create a bz2 archive of multiple files, rooted at /path archive : path : - /path/to/foo - /path/wong/foo dest : /path/file.tar.bz2 format : bz2
是最基本但最有用的模块之一,它使用命令名称,后跟一个用空格分隔的参数列表。
- name : return motd to registered var command : cat /etc/motd register : mymotd
- name : Change the working directory to somedir/ and run the command as db_owner if /path/to/database does not exist. command : /usr/bin/make_database.sh db_user db_name become : yes become_user : db_owner args : chdir : somedir/ creates : /path/to/database
Ansible中有大量可用的模块,但是这十个模块是您可以用于自动化工作的最基本,最强大的模块。 随着需求的变化,您可以通过在命令行上输入ansible-doc <module-name>或参考来了解其他有用的模块。
翻译自:
ansible 模块
转载地址:http://evszd.baihongyu.com/