简单描述ansible的几个元件,比官方简单易懂。官网全文:https://docs.ansible.com/ansible/devel/dev_guide/overview_architecture.html

模块modules


在远端执行的脚本,一般会有输出。

模块实用程序 Module utilities


模块的公共方法。

插件 plugins


在本地执行的脚本,比如对远端输出进行加工。

存货 inventory


资产(主机)清单,可以分组:


[webservers]
www1.example.com
www2.example.com

[dbservers]
db0.example.com
db1.example.com

剧本 playbooks


编排一组节点和工作,举例:


  • hosts: webservers
    serial: 5 # update 5 machines at a time
    roles:
    • common
    • webapp
  • hosts: content_servers
    roles:
    • common
    • content


      Ansible 搜索路径 search path的优先顺序

      多个路径的组件可以被加载使用,如果同名,按如下优先顺序:

      1)命令行的剧本所在目录

      如ansible-playbook /path/to/play.yml
      则如下路径的组件会被加载:
      /path/to/modules
      /path/to/module_utils
      /path/to/plugins


      2)命令行的剧本通过- import_playbook引用的剧本所在目录

      如play.yml包含 - import_playbook: /path/to/subdir/play1.yml
      则如下路径会被加载:
      /path/to/subdir/modules
      /path/to/subdir/module_utils
      /path/to/subdir/plugins


      3)playbook 引用的角色目录的子目录。

      如果 play.yml运行myrole,Ansible 会附加这些目录(如果它们存在):

      /path/to/roles/myrole/modules
      /path/to/roles/myrole/module_utils
      /path/to/roles/myrole/plugins


      4)ansible.cfg,包括各种插件类型的路径。有关详细信息,请参阅Ansible 配置设置。

      示例ansible.cfg字段:
      DEFAULT_MODULE_PATH
      DEFAULT_MODULE_UTILS_PATH
      DEFAULT_CACHE_PLUGIN_PATH
      DEFAULT_FILTER_PLUGIN_PATH
      示例环境变量:
      ANSIBLE_LIBRARY
      ANSIBLE_MODULE_UTILS
      ANSIBLE_CACHE_PLUGINS
      ANSIBLE_FILTER_PLUGINS
      5) Ansible 发行版的标准目录。

注意:
用户设定会覆盖标准设定。例如,有一个basic.py在用户指定目录中,它将覆盖标准的ansible.module_utils.basic.

如果您在不同的用户指定目录中有多个同名的模块、模块实用程序或插件,则命令行中的命令顺序以及每次运行中包含和角色的顺序都会有影响。