ansible plugins簡介
阿新 • • 發佈:2018-05-24
nor unit ret 數據源 ini win int pan current
下邊簡單介紹Ansible包含的各種插件(插件具體用法請參考官方文檔或者ansible-doc):
“normal” action插件 用於尚未擁有action插件的模塊。 您可以啟用一個自定義操作插件,方法是將其放置到與role中的play相鄰的action_plugins目錄中,
當使用關聯模塊時,Action插件默認執行;不需要采取任何行動
默認情況下,回調插件控制運行命令行程序時看到的大部分輸出, 但也可用於添加其他輸出,與其他工具集成並將事件整理到存儲後端。
個人覺得ini最好用
查找插件返回的數據可以使用Ansible中的標準模板系統提供,通常用於從這些系統中加載包含信息的變量或模板。
lookups是Jinja2模板語言的Ansible特定擴展。
Vars插件在Ansible 2.0中部分實現,並被重寫為從Ansible 2.4開始全面實施。
Ansible附帶的host_group_vars插件可以從主機變量和組變量中讀取變量。
Jinja2附帶很多過濾器。請參閱官方Jinja2模板文檔中的內置過濾器。
考慮到模板產生在Ansible控制器上,而不是在任務的目標主機上,所以過濾器也在控制器上執行,因為它們處理本地數據。 除了jinja2,Ansible附帶自己的產品,並允許用戶添加他們自己的自定義過濾器。
像所有模板一樣,tests總是在Ansible控制器上執行,而不是在任務的目標上執行,因為他們測試本地數據。
除了jinjia2 tests,Ansible提供更多功能,用戶可以自己輕松創建。
這是通過yaml配置文件配置的(默認為/etc/ansible/plugin_filters.yml)。該文件的格式是:
ansible插件是增強ansible的核心功能的代碼片段,ansible使用插件架構來實現豐富,靈活和可擴展的功能集。
Ansible提供了許多方便的插件,您可以輕松編寫自己的插件。下邊簡單介紹Ansible包含的各種插件(插件具體用法請參考官方文檔或者ansible-doc):
1、action插件
Action插件與模塊一起執行PlayBook任務所需的操作。它們通常在後臺自動執行,在模塊執行之前進行必要的工作。“normal” action插件 用於尚未擁有action插件的模塊。 您可以啟用一個自定義操作插件,方法是將其放置到與role中的play相鄰的action_plugins目錄中,
2、cache插件
緩存插件實現的後端緩存機制,可以使ansible存儲獲得的facts和inventory元數據,不必再從源頭檢索這些數據,而降低性能。 默認的緩存插件是memory plugin,它只緩存ansible目前執行的數據,其他持久存儲的插件也可以緩存數據- jsonfile - JSON formatted files.
- memcached - Use memcached DB for cache
- memory - RAM backed, non persistent
- mongodb - Use MongoDB for caching
- pickle - Pickle formatted files.
- redis - Use Redis DB for cache
- yaml - YAML formatted files.
3、callback插件
回調插件可以在響應事件時向Ansible添加新行為。默認情況下,回調插件控制運行命令行程序時看到的大部分輸出, 但也可用於添加其他輸出,與其他工具集成並將事件整理到存儲後端。
- actionable - shows only items that need attention
- context_demo - demo callback that adds play/task context
- debug - formated stdout/stderr display
- default - default Ansible screen output
- dense - minimal stdout output
- foreman - Sends events to Foreman
- full_skip - suppresses tasks if all hosts skipped
- hipchat - post task events to hipchat
- jabber - post task events to a jabber server
- json - Ansible screen output as JSON
- junit - write playbook output to a JUnit file.
- log_plays - write playbook output to log file
- logentries - Sends events to Logentries
- logstash - Sends events to Logstash
- mail - Sends failure events via email
- minimal - minimal Ansible screen output
- null - Don’t display stuff to screen
- oneline - oneline Ansible screen output
- osx_say - oneline Ansible screen output
- profile_roles - adds timing information to roles
- profile_tasks - adds time information to tasks
- selective - only print certain tasks
- skippy - Ansible screen output that ignores skipped status
- slack - Sends play events to a Slack channel
- stderr - Splits output, sending failed tasks to stderr
- syslog_json - sends JSON events to syslog
- timer - Adds time to play stats
- tree - Save host events to files
- unixy - condensed Ansible output
- yaml - yaml-ized Ansible screen output
4、inventory插件
清單插件允許用戶指向數據源,以便通過-i /path/to/file和/ 或-i ‘host1,host2 命令行參數 或其他配置來源編譯Ansible用於定位任務的主機清單。個人覺得ini最好用
- advanced_host_list - Parses a ‘host list’ with ranges
- auto - Loads and executes an inventory plugin specified in a YAML config
- aws_ec2 - ec2 inventory source
- constructed - Uses Jinja2 to construct vars and groups based on existing inventory.
- host_list - Parses a ‘host list’ string
- ini - Uses an Ansible INI file as inventory source.
- k8s - Kubernetes (K8s) inventory source
- openshift - OpenShift inventory source
- openstack - OpenStack inventory source
- script - Executes an inventory script that returns JSON
- virtualbox - virtualbox inventory source
- yaml - Uses a specifically YAML file as inventory source.
5、lookup插件
查找插件允許Ansible從外部來源訪問數據。這可以包括:聯系外部數據存儲和服務,讀取文件系統。查找插件返回的數據可以使用Ansible中的標準模板系統提供,通常用於從這些系統中加載包含信息的變量或模板。
lookups是Jinja2模板語言的Ansible特定擴展。
- aws_account_attribute - Look up AWS account attributes.
- aws_service_ip_ranges - Look up the IP ranges for services provided in AWS such as EC2 and S3.
- aws_ssm - Get the value for a SSM parameter or all parameters under a path.
- cartesian - returns the cartesian product of lists
- chef_databag - fetches data from a Chef Databag
- config - Lookup current Ansilbe configuration values
- conjur_variable - Fetch credentials from CyberArk Conjur.
- consul_kv - Fetch metadata from a Consul key value store.
- credstash - retrieve secrets from Credstash on AWS
- csvfile - read data from a TSV or CSV file
- cyberarkpassword - get secrets from CyberArk AIM
- dict - returns key/value pair items from dictionaries
- dig - query DNS using the dnspython library
- dnstxt - query a domain(s)’s DNS txt fields
- env - read the value of environment variables
- etcd - get info from etcd server
- file - read file contents
- fileglob - list files matching a pattern
- filetree - recursively match all files in a directory tree
- first_found - return first file found from list
- flattened - return single list completely flattened
- hashi_vault - retrieve secrets from HasihCorp’s vault
- hiera - get info from hiera data
- indexed_items - rewrites lists to return ‘indexed items’
- ini - read data from a ini file
- inventory_hostnames - list of inventory hosts matching a host pattern
- items - list of items
- k8s - Query the K8s API
- keyring - grab secrets from the OS keyring
- lastpass - fetch data from lastpass
- lines - read lines from command
- list - simply returns what it is given.
- mongodb - lookup info from MongoDB
- nested - composes a list with nested elements of other lists
- nios - Query Infoblox NIOS objects
- nios_next_ip - Return the next available IP address for a network
- openshift - Query the OpenShift API
- password - retrieve or generate a random password, stored in a file
- passwordstore - manage passwords with passwordstore.org’s pass utility
- pipe - read output from a command
- random_choice - return random element from list
- redis - fetch data from Redis
- redis_kv - fetch data from Redis
- sequence - generate a list based on a number sequence
- shelvefile - read keys from Python shelve file
- subelements - traverse nested key from a list of dictionaries
- template - retrieve contents of file after templating with Jinja2
- together - merges lists into syncronized list
- url - return contents from URL
- vars - Lookup templated value of variables
6、shell插件
Shell插件可以確保Ansible運行的基本命令格式正確,可與目標機器一起使用,並允許用戶配置某些與Ansible執行任務相關的行為- csh - C shell (/bin/csh)
- fish - fish shell (/bin/fish)
- powershell - Windows Powershell
- sh - POSIX shell (/bin/sh)
7、strategy插件
策略插件通過處理play和hosts調度 來控制play執行的流程。- debug - Executes tasks in interactive debug session.
- free - Executes tasks on each host independently
- linear - Executes tasks in a linear fashion
8、vars插件
Vars插件將額外的變量註入到Ansible中運行,這些運行不是來自庫存源,劇本或命令行。 Playbook使用vars插件構建像‘host_vars‘和‘group_vars‘的工作目錄。Vars插件在Ansible 2.0中部分實現,並被重寫為從Ansible 2.4開始全面實施。
Ansible附帶的host_group_vars插件可以從主機變量和組變量中讀取變量。
- host_group_vars - In charge of loading group_vars and host_vars
9、filters
Ansible中的過濾器來自Jinja2,用於轉換模板表達式中的數據。Jinja2附帶很多過濾器。請參閱官方Jinja2模板文檔中的內置過濾器。
考慮到模板產生在Ansible控制器上,而不是在任務的目標主機上,所以過濾器也在控制器上執行,因為它們處理本地數據。 除了jinja2,Ansible附帶自己的產品,並允許用戶添加他們自己的自定義過濾器。
10、tests
Jinja中的tests是評估模板表達式,並返回True或False的一種方式,Jinja附帶許多這些。在官方Jinja模板文檔中查看內置測試。 tests和filters之間的主要區別在於Jinja tests用於比較,而filters用於數據處理,並且在jinja中有不同的應用程序,如map()和select()來選擇列表中的項目。像所有模板一樣,tests總是在Ansible控制器上執行,而不是在任務的目標上執行,因為他們測試本地數據。
除了jinjia2 tests,Ansible提供更多功能,用戶可以自己輕松創建。
11、插件過濾配置
Ansible 2.5為站點管理員添加了模塊黑名單,用於禁用Ansible的某些模塊。這是通過yaml配置文件配置的(默認為/etc/ansible/plugin_filters.yml)。該文件的格式是:
--- filter_version: ‘1.0‘ module_blacklist: # Deprecated - docker # We only allow pip, not easy_install - easy_install
ansible plugins簡介