博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ansible 模块_您需要知道的10个Ansible模块
阅读量:2533 次
发布时间:2019-05-11

本文共 6694 字,大约阅读时间需要 22 分钟。

ansible 模块

是一个开源IT配置管理和自动化平台。 它使用人类可读的YAML模板,因此用户可以对重复性任务进行编程以自动执行,而无需学习高级编程语言。

Ansible是无代理的,这意味着它管理的节点不需要在其上安装任何软件。 这样可以消除潜在的安全漏洞,并使整体管理更加顺畅。

Ansible 是可以在Ansible剧本中使用的独立脚本。 剧本由戏剧组成,而戏剧由任务组成。 如果您是Ansible的新手,这些概念可能会让人感到困惑,但是随着您开始编写和使用更多的剧本,它们将变得越来越熟悉。

Ansible具有三个主要文件,您需要考虑:

  • 主机/清单文件:包含需要管理的节点的条目
  • Ansible.cfg文件:默认情况下位于/etc/ansible/ansible.cfg ,它具有必要的特权升级选项和清单文件的位置
  • 主文件:具有包含可在清单或主机文件中列出的主机上执行各种任务的模块的剧本

模块1:包管理

有一个适用于大多数流行软件包管理器的模块,例如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数据库。

范例2:

- name      
: Install a list of packages
  yum :
    name
:      - nginx
      - postgresql
      - postgresql-server
    state
: present

这将安装软件包列表,并帮助下载多个软件包。

模块2:服务

安装软件包后,需要一个模块来启动它。 该使您可以启动,停止和重新加载已安装的软件包。 这非常方便。

范例1:

- name      
: Start service foo, based on running process /usr/bin/foo
  service :
    name
: foo
    pattern
: /usr/bin/foo
    state
: started

这将启动服务foo

范例2:

- name      
: Restart network service for interface eth0
  service :
    name
: network
    state
: restarted
    args
: eth0

这将重新启动接口eth0的网络服务。

单元3:复制

将文件从本地或远程计算机复制到远程计算机上的某个位置。

范例1:

- 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

范例2:

- 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

模块4:调试

在执行过程中打印语句,对于调试变量或表达式而无需停止剧本很有用。

范例1:

- name      
: Display
all variables/facts known for a host
  debug :
    var
: hostvars
[ inventory_hostname
]
    verbosity
: 4

这将显示清单文件中定义的主机的所有变量信息。

范例2:

- 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

模块5:文件

管理文件及其属性。

  • 它设置文件,符号链接或目录的属性。
  • 它还会删除文件,符号链接或目录。

范例1:

- name      
: Change file ownership, group and permissions
  file :
    path
: /etc/foo.conf
    owner
: foo
    group
: foo
    mode
: '0644'

这将创建一个名为foo.conf的文件,并将权限设置为0644

范例2:

- name      
: Create a directory if it does not exist
  file :
    path
: /etc/some_directory
    state
: directory
    mode
: '0755'

这将创建一个名为some_directory的目录,并将权限设置为0755

模组6:Lineinfile

管理文本文件中的行。

  • 它确保特定行位于文件中,或使用向后引用的正则表达式替换现有行。
  • 当您只想更改文件中的一行时,它主要有用。

范例1:

- name      
: Ensure SELinux is set to enforcing mode
  lineinfile :
    path
: /etc/selinux/config
    regexp
: '^SELINUX='
    line
: SELINUX=enforcing

这将设置SELINUX = enforcing的值。

范例2:

- 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和主机名的条目。

单元7:Git

管理存储库的git checkout,以部署文件或软件。

范例1:

# Example Create git archive from repo      
- git :
    repo
: https://github.com/ansible/ansible-examples.git
    dest
: /src/ansible-examples
    archive
: /tmp/ansible-examples.zip

范例2:

- git :      
    repo
: https://github.com/ansible/ansible-examples.git
    dest
: /src/ansible-examples
    separate_git_dir
: /src/ansible-examples.git

这将用一个单独的Git目录克隆一个仓库。

模组8:Cli_command

(最早在Ansible 2.7中可用)提供了一种平台无关的方式,可通过network_cli连接插件将基于文本的配置推送到网络设备。

范例1:

- name      
: commit with comment
  cli_config :
    config
: set system host-name foo
    commit_comment
: this is a test

这将设置交换机的主机名,并以提交消息退出。

范例2:

- name      
: configurable backup path
  cli_config :
    config
:
"{
{ lookup('template', 'basic/config.j2') }}"
    backup
:
yes
    backup_options :
      filename
: backup.cfg
      dir_path
: /home/user

这会将配置备份到其他目标文件。

单元9:封存

创建一个或多个文件的压缩存档。 默认情况下,假定目标上存在压缩源。

范例1:

- name      
: Compress directory /path/to/foo/ into /path/to/foo.tgz
  archive :
    path
: /path/to/foo
    dest
: /path/to/foo.tgz

范例2:

- 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

模块10:命令

是最基本但最有用的模块之一,它使用命令名称,后跟一个用空格分隔的参数列表。

范例1:

- name      
: return motd to registered var
  command
: cat /etc/motd
  register
: mymotd

范例2:

- 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/

你可能感兴趣的文章
小D课堂 - 零基础入门SpringBoot2.X到实战_第2节 SpringBoot接口Http协议开发实战_9、SpringBoot基础HTTP其他提交方法请求实战...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第2节 SpringBoot接口Http协议开发实战_12、SpringBoot2.x文件上传实战...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第4节 Springboot2.0单元测试进阶实战和自定义异常处理_19、SpringBoot个性化启动banner设置debug日志...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第4节 Springboot2.0单元测试进阶实战和自定义异常处理_20、SpringBoot2.x配置全局异常实战...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第5节 SpringBoot部署war项目到tomcat9和启动原理讲解_23、SpringBoot2.x启动原理概述...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第4节 Springboot2.0单元测试进阶实战和自定义异常处理_21、SpringBoot2.x配置全局异常返回自定义页面...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第8节 数据库操作之整合Mybaties和事务讲解_32..SpringBoot2.x持久化数据方式介绍...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第8节 数据库操作之整合Mybaties和事务讲解_34、SpringBoot整合Mybatis实操和打印SQL语句...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第8节 数据库操作之整合Mybaties和事务讲解_36、SpringBoot整合mybatis之事务处理实战...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第8节 数据库操作之整合Mybaties和事务讲解_35、事务介绍和常见的隔离级别,传播行为...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第9节 SpringBoot2.x整合Redis实战_40、Redis工具类封装讲解和实战...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第9节 SpringBoot2.x整合Redis实战_37、分布式缓存Redis介绍...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第10节 SpringBoot整合定时任务和异步任务处理_42、SpringBoot常用定时任务配置实战...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第9节 SpringBoot2.x整合Redis实战_39、SpringBoot2.x整合redis实战讲解...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第14节 高级篇幅之SpringBoot多环境配置_59、SpringBoot多环境配置介绍和项目实战...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第10节 SpringBoot整合定时任务和异步任务处理_41、SpringBoot定时任务schedule讲解...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第10节 SpringBoot整合定时任务和异步任务处理_43、SpringBoot2.x异步任务实战(核心知识)...
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_1_01课程简介
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第11节 Logback日志框架介绍和SpringBoot整合实战_45、SpringBoot2.x日志讲解和Logback配置实战...
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_1_02技术选型
查看>>