710 lines
37 KiB
Bash
710 lines
37 KiB
Bash
#compdef ansible
|
||
# ------------------------------------------------------------------------------
|
||
# Copyright (c) 2011 Github zsh-users - http://github.com/zsh-users
|
||
# All rights reserved.
|
||
#
|
||
# Redistribution and use in source and binary forms, with or without
|
||
# modification, are permitted provided that the following conditions are met:
|
||
# * Redistributions of source code must retain the above copyright
|
||
# notice, this list of conditions and the following disclaimer.
|
||
# * Redistributions in binary form must reproduce the above copyright
|
||
# notice, this list of conditions and the following disclaimer in the
|
||
# documentation and/or other materials provided with the distribution.
|
||
# * Neither the name of the zsh-users nor the
|
||
# names of its contributors may be used to endorse or promote products
|
||
# derived from this software without specific prior written permission.
|
||
#
|
||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||
# DISCLAIMED. IN NO EVENT SHALL ZSH-USERS BE LIABLE FOR ANY
|
||
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||
# ------------------------------------------------------------------------------
|
||
# Description
|
||
# -----------
|
||
#
|
||
# Completion script for ansible v2.0.0.2 (http://ansible.org)
|
||
#
|
||
# ------------------------------------------------------------------------------
|
||
# Authors
|
||
# -------
|
||
#
|
||
# * Romain Bossart (https://github.com/bosr)
|
||
# * Adam Stevko (https://github.com/xen0l)
|
||
#
|
||
# ------------------------------------------------------------------------------
|
||
#
|
||
# Needs either ANSIBLE_HOSTS or /etc/ansible/hosts on linux
|
||
# (or /usr/local/etc/ansible/hosts on OSX)
|
||
#
|
||
# Note 1: the following gist (https://gist.github.com/15ed54a438a36d67fd99.git)
|
||
# has some files to help improve the hostfile shell parsing
|
||
#
|
||
# Note 2: I tried to use `_arguments --`, but the output of `ansible --help`
|
||
# is not parsed entirely correctly, and anyway no modules or host would available.
|
||
#
|
||
|
||
|
||
# ansible zsh completion
|
||
#
|
||
|
||
__host_file_location () {
|
||
# find the location of the host file:
|
||
# 1. check $ANSIBLE_HOSTS
|
||
# 2. else check /etc/ansible/hosts or /usr/local/etc/...
|
||
# (depending on platform)
|
||
#
|
||
[[ "$OSTYPE" == darwin* ]] && FALLBACK="/usr/local/etc/ansible/hosts"
|
||
[[ "$OSTYPE" == linux* ]] && FALLBACK="/etc/ansible/hosts"
|
||
HOST_FILE=${ANSIBLE_HOSTS:=${FALLBACK}}
|
||
[[ -f ${HOST_FILE} ]] || HOST_FILE="$PWD/ansible/inventory/hosts"
|
||
[[ -f ${HOST_FILE} ]] || HOST_FILE=/dev/null
|
||
|
||
echo ${HOST_FILE}
|
||
}
|
||
|
||
__ll_group_list () {
|
||
# parses the ini hostfile for groups only: [...]
|
||
HOST_FILE=$(__host_file_location)
|
||
|
||
local -a group_list
|
||
group_list=$(command \
|
||
cat ${HOST_FILE} \
|
||
| awk '$1 ~ /^\[.*\]$/ && !/=/ && !/:vars/ \
|
||
{ gsub(/[\[\]]/, "", $1); gsub(/:children/, "", $1) ; print $1 }' \
|
||
| uniq )
|
||
|
||
echo ${group_list}
|
||
}
|
||
|
||
|
||
__host_list ()
|
||
{
|
||
# parses the ini hostfile for hosts only
|
||
# but then has to remove all group occurrences
|
||
HOST_FILE=$(__host_file_location)
|
||
|
||
# this will also contain groups if they are referenced in other groups
|
||
local -a mixed_host_list
|
||
mixed_host_list=$(command \
|
||
cat ${HOST_FILE} \
|
||
| awk 'NF && $1 !~ /^[[:space:]]*#|[\[:=]/ { print $1 }' \
|
||
| sort | uniq)
|
||
|
||
# compute set difference h1 - h2
|
||
local -a h1 h2 host_list
|
||
h1=${mixed_host_list}
|
||
h2=$(__ll_group_list)
|
||
host_list=($(command \
|
||
sort <(echo $h1) <(echo $h2) <(echo $h2) \
|
||
| uniq -u \
|
||
| paste -s -d ' ' - )
|
||
)
|
||
|
||
_wanted application expl 'hosts' compadd ${host_list}
|
||
|
||
# method that delegates to ansible (slow)
|
||
# _wanted application expl 'hosts' compadd $(command ansible \
|
||
# all --list-hosts\
|
||
# 2>/dev/null)
|
||
}
|
||
|
||
__group_list ()
|
||
{
|
||
gl=($(command echo $(__ll_group_list) | paste -s -d ' ' - )) # 'a\nb\nc' -> (a b c)
|
||
_wanted application2 expl 'groups' compadd $gl
|
||
}
|
||
|
||
|
||
_modules=(
|
||
'a10_server:Manage A10 Networks AX/SoftAX/Thunder/vThunder devices'
|
||
'a10_service_group:Manage A10 Networks devices’ service groups'
|
||
'a10_virtual_server:Manage A10 Networks devices’ virtual servers'
|
||
'accelerate:Enable accelerated mode on remote node'
|
||
'acl:Sets and retrieves file ACL information.'
|
||
'add_host:add a host (and alternatively a group) to the ansible-playbook in-memory inventory'
|
||
'airbrake_deployment:Notify airbrake about app deployments'
|
||
'alternatives:Manages alternative programs for common commands'
|
||
'apache2_module:enables/disables a module of the Apache2 webserver'
|
||
'apk:Manages apk packages'
|
||
'apt:Manages apt-packages'
|
||
'apt_key:Add or remove an apt key'
|
||
'apt_repository:Add and remove APT repositories'
|
||
'apt_rpm:apt_rpm package manager'
|
||
'assemble:Assembles a configuration file from fragments'
|
||
'assert:Fail with custom message'
|
||
'async_status:Obtain status of asynchronous task'
|
||
'at:Schedule the execution of a command or script file via the at command.'
|
||
'authorized_key:Adds or removes an SSH authorized key'
|
||
'azure:create or terminate a virtual machine in azure'
|
||
'bigip_facts:Collect facts from F5 BIG-IP devices'
|
||
'bigip_gtm_wide_ip:Manages F5 BIG-IP GTM wide ip'
|
||
'bigip_monitor_http:Manages F5 BIG-IP LTM http monitors'
|
||
'bigip_monitor_tcp:Manages F5 BIG-IP LTM tcp monitors'
|
||
'bigip_node:Manages F5 BIG-IP LTM nodes'
|
||
'bigip_pool:Manages F5 BIG-IP LTM pools'
|
||
'bigip_pool_member:Manages F5 BIG-IP LTM pool members'
|
||
'bigip_virtual_server:Manages F5 BIG-IP LTM virtual servers'
|
||
'bigpanda:Notify BigPanda about deployments'
|
||
'blockinfile:Insert/update/remove a text block surrounded by marker lines.'
|
||
'boundary_meter:Manage boundary meters'
|
||
'bower:Manage bower packages with bower'
|
||
'bundler:Manage Ruby Gem dependencies with Bundler'
|
||
'bzr:Deploy software (or files) from bzr branches'
|
||
'campfire:Send a message to Campfire'
|
||
'capabilities:Manage Linux capabilities'
|
||
'circonus_annotation:create an annotation in circonus'
|
||
'cl_bond:Configures a bond port on Cumulus Linux'
|
||
'cl_bridge:Configures a bridge port on Cumulus Linux'
|
||
'cl_img_install:Install a different Cumulus Linux version.'
|
||
'cl_interface:Configures a front panel port, loopback or management port on Cumulus Linux.'
|
||
'cl_interface_policy:Configure interface enforcement policy on Cumulus Linux'
|
||
'cl_license:Install Cumulus Linux license'
|
||
'cl_ports:Configure Cumulus Switch port attributes (ports.conf)'
|
||
'clc_aa_policy:Create or Delete Anti Affinity Policies at CenturyLink Cloud.'
|
||
'clc_alert_policy:Create or Delete Alert Policies at CenturyLink Cloud.'
|
||
'clc_blueprint_package:deploys a blue print package on a set of servers in CenturyLink Cloud.'
|
||
'clc_firewall_policy:Create/delete/update firewall policies'
|
||
'clc_group:Create/delete Server Groups at Centurylink Cloud'
|
||
'clc_loadbalancer:Create, Delete shared loadbalancers in CenturyLink Cloud.'
|
||
'clc_modify_server:modify servers in CenturyLink Cloud.'
|
||
'clc_publicip:Add and Delete public ips on servers in CenturyLink Cloud.'
|
||
'clc_server:Create, Delete, Start and Stop servers in CenturyLink Cloud.'
|
||
'clc_server_snapshot:Create, Delete and Restore server snapshots in CenturyLink Cloud.'
|
||
'cloudflare_dns:manage Cloudflare DNS records'
|
||
'cloudformation:Create or delete an AWS CloudFormation stack'
|
||
'cloudtrail:manage CloudTrail creation and deletion'
|
||
'command:Executes a command on a remote node'
|
||
'composer:Dependency Manager for PHP'
|
||
'consul:Add, modify & delete services within a consul cluster.'
|
||
'consul_acl:manipulate consul acl keys and rules'
|
||
'consul_kv:Manipulate entries in the key/value store of a consul cluster.'
|
||
'consul_session:manipulate consul sessions'
|
||
'copy:Copies files to remote locations.'
|
||
'cpanm:Manages Perl library dependencies.'
|
||
'cron:Manage cron.d and crontab entries.'
|
||
'cronvar:Manage variables in crontabs'
|
||
'crypttab:Encrypted Linux block devices'
|
||
'cs_account:Manages accounts on Apache CloudStack based clouds.'
|
||
'cs_affinitygroup:Manages affinity groups on Apache CloudStack based clouds.'
|
||
'cs_cluster:Manages host clusters on Apache CloudStack based clouds.'
|
||
'cs_configuration:Manages configuration on Apache CloudStack based clouds.'
|
||
'cs_domain:Manages domains on Apache CloudStack based clouds.'
|
||
'cs_facts:Gather facts on instances of Apache CloudStack based clouds.'
|
||
'cs_firewall:Manages firewall rules on Apache CloudStack based clouds.'
|
||
'cs_instance:Manages instances and virtual machines on Apache CloudStack based clouds.'
|
||
'cs_instance_facts:Gathering facts from the API of instances from Apache CloudStack based clouds.'
|
||
'cs_instancegroup:Manages instance groups on Apache CloudStack based clouds.'
|
||
'cs_ip_address:Manages public IP address associations on Apache CloudStack based clouds.'
|
||
'cs_iso:Manages ISO images on Apache CloudStack based clouds.'
|
||
'cs_loadbalancer_rule:Manages load balancer rules on Apache CloudStack based clouds.'
|
||
'cs_loadbalancer_rule_member:Manages load balancer rule members on Apache CloudStack based clouds.'
|
||
'cs_network:Manages networks on Apache CloudStack based clouds.'
|
||
'cs_pod:Manages pods on Apache CloudStack based clouds.'
|
||
'cs_portforward:Manages port forwarding rules on Apache CloudStack based clouds.'
|
||
'cs_project:Manages projects on Apache CloudStack based clouds.'
|
||
'cs_resourcelimit:Manages resource limits on Apache CloudStack based clouds.'
|
||
'cs_securitygroup:Manages security groups on Apache CloudStack based clouds.'
|
||
'cs_securitygroup_rule:Manages security group rules on Apache CloudStack based clouds.'
|
||
'cs_sshkeypair:Manages SSH keys on Apache CloudStack based clouds.'
|
||
'cs_staticnat:Manages static NATs on Apache CloudStack based clouds.'
|
||
'cs_template:Manages templates on Apache CloudStack based clouds.'
|
||
'cs_user:Manages users on Apache CloudStack based clouds.'
|
||
'cs_vmsnapshot:Manages VM snapshots on Apache CloudStack based clouds.'
|
||
'cs_volume:Manages volumes on Apache CloudStack based clouds.'
|
||
'cs_zone:Manages zones on Apache CloudStack based clouds.'
|
||
'cs_zone_facts:Gathering facts of zones from Apache CloudStack based clouds.'
|
||
'datadog_event:Posts events to DataDog service'
|
||
'datadog_monitor:Manages Datadog monitors'
|
||
'debconf:Configure a .deb package'
|
||
'debug:Print statements during execution'
|
||
'deploy_helper:Manages some of the steps common in deploying projects.'
|
||
'digital_ocean:Create/delete a droplet/SSH_key in DigitalOcean'
|
||
'digital_ocean_domain:Create/delete a DNS record in DigitalOcean'
|
||
'digital_ocean_sshkey:Create/delete an SSH key in DigitalOcean'
|
||
'django_manage:Manages a Django application.'
|
||
'dnf:Manages packages with the *dnf* package manager'
|
||
'dnsimple:Interface with dnsimple.com (a DNS hosting service).'
|
||
'dnsmadeeasy:Interface with dnsmadeeasy.com (a DNS hosting service).'
|
||
'docker:manage docker containers'
|
||
'docker_image:manage docker images'
|
||
'docker_login:Manage Docker registry logins'
|
||
'dpkg_selections:Dpkg package selection selections'
|
||
'dynamodb_table:Create, update or delete AWS Dynamo DB tables.'
|
||
'easy_install:Installs Python libraries'
|
||
'ec2:create, terminate, start or stop an instance in ec2'
|
||
'ec2_ami:create or destroy an image in ec2'
|
||
'ec2_ami_copy:copies AMI between AWS regions, return new image id'
|
||
'ec2_ami_find:Searches for AMIs to obtain the AMI ID and other information'
|
||
'ec2_ami_search(D):Retrieve AWS AMI information for a given operating system.'
|
||
'ec2_asg:Create or delete AWS Autoscaling Groups'
|
||
'ec2_eip:associate an EC2 elastic IP with an instance.'
|
||
'ec2_elb:De-registers or registers instances from EC2 ELBs'
|
||
'ec2_elb_facts:Gather facts about EC2 Elastic Load Balancers in AWS'
|
||
'ec2_elb_lb:Creates or destroys Amazon ELB.'
|
||
'ec2_eni:Create and optionally attach an Elastic Network Interface (ENI) to an instance'
|
||
'ec2_eni_facts:Gather facts about ec2 ENI interfaces in AWS'
|
||
'ec2_facts:Gathers facts about remote hosts within ec2 (aws)'
|
||
'ec2_group:maintain an ec2 VPC security group.'
|
||
'ec2_key:maintain an ec2 key pair.'
|
||
'ec2_lc:Create or delete AWS Autoscaling Launch Configurations'
|
||
'ec2_metric_alarm:Create/update or delete AWS Cloudwatch ‘metric alarms’'
|
||
'ec2_remote_facts:Gather facts about ec2 instances in AWS'
|
||
'ec2_scaling_policy:Create or delete AWS scaling policies for Autoscaling groups'
|
||
'ec2_snapshot:creates a snapshot from an existing volume'
|
||
'ec2_tag:create and remove tag(s) to ec2 resources.'
|
||
'ec2_vol:create and attach a volume, return volume id and device map'
|
||
'ec2_vol_facts:Gather facts about ec2 volumes in AWS'
|
||
'ec2_vpc:configure AWS virtual private clouds'
|
||
'ec2_vpc_dhcp_options:Manages DHCP Options, and can ensure the DHCP options for the given VPC match what’s requested'
|
||
'ec2_vpc_igw:Manage an AWS VPC Internet gateway'
|
||
'ec2_vpc_net:Configure AWS virtual private clouds'
|
||
'ec2_vpc_net_facts:Gather facts about ec2 VPCs in AWS'
|
||
'ec2_vpc_route_table:Manage route tables for AWS virtual private clouds'
|
||
'ec2_vpc_route_table_facts:Gather facts about ec2 VPC route tables in AWS'
|
||
'ec2_vpc_subnet:Manage subnets in AWS virtual private clouds'
|
||
'ec2_vpc_subnet_facts:Gather facts about ec2 VPC subnets in AWS'
|
||
'ec2_win_password:gets the default administrator password for ec2 windows instances'
|
||
'ecs_cluster:create or terminate ecs clusters'
|
||
'ecs_service:create, terminate, start or stop a service in ecs'
|
||
'ecs_service_facts:list or describe services in ecs'
|
||
'ecs_task:run, start or stop a task in ecs'
|
||
'ecs_taskdefinition:register a task definition in ecs'
|
||
'ejabberd_user:Manages users for ejabberd servers'
|
||
'elasticache:Manage cache clusters in Amazon Elasticache.'
|
||
'elasticache_subnet_group:manage Elasticache subnet groups'
|
||
'elasticsearch_plugin:Manage Elasticsearch plugins'
|
||
'eos_command:Run arbitrary command on EOS device'
|
||
'eos_config:Manage Arista EOS configuration sections'
|
||
'eos_eapi:Manage and configure EAPI. Requires EOS v4.12 or greater.'
|
||
'eos_template:Manage Arista EOS device configurations'
|
||
'expect:Executes a command and responds to prompts'
|
||
'facter:Runs the discovery program *facter* on the remote system'
|
||
'fail:Fail with custom message'
|
||
'fetch:Fetches a file from remote nodes'
|
||
'file:Sets attributes of files'
|
||
'filesystem:Makes file system on block device'
|
||
'find:return a list of files based on specific criteria'
|
||
'fireball(D):Enable fireball mode on remote node'
|
||
'firewalld:Manage arbitrary ports/services with firewalld'
|
||
'flowdock:Send a message to a flowdock'
|
||
'gc_storage:This module manages objects/buckets in Google Cloud Storage.'
|
||
'gce:create or terminate GCE instances'
|
||
'gce_img:utilize GCE image resources'
|
||
'gce_lb:create/destroy GCE load-balancer resources'
|
||
'gce_net:create/destroy GCE networks and firewall rules'
|
||
'gce_pd:utilize GCE persistent disk resources'
|
||
'gce_tag:add or remove tag(s) to/from GCE instance'
|
||
'gem:Manage Ruby gems'
|
||
'get_url:Downloads files from HTTP, HTTPS, or FTP to node'
|
||
'getent:a wrapper to the unix getent utility'
|
||
'git:Deploy software (or files) from git checkouts'
|
||
'github_hooks:Manages github service hooks.'
|
||
'glance_image(D):Add/Delete images from glance'
|
||
'gluster_volume:Manage GlusterFS volumes'
|
||
'group:Add or remove groups'
|
||
'group_by:Create Ansible groups based on facts'
|
||
'grove:Sends a notification to a grove.io channel'
|
||
'hall:Send notification to Hall'
|
||
'haproxy:Enable, disable, and set weights for HAProxy backend servers using socket commands.'
|
||
'hg:Manages Mercurial (hg) repositories.'
|
||
'hipchat:Send a message to hipchat.'
|
||
'homebrew:Package manager for Homebrew'
|
||
'homebrew_cask:Install/uninstall homebrew casks.'
|
||
'homebrew_tap:Tap a Homebrew repository.'
|
||
'hostname:Manage hostname'
|
||
'htpasswd:manage user files for basic authentication'
|
||
'iam:Manage IAM users, groups, roles and keys'
|
||
'iam_cert:Manage server certificates for use on ELBs and CloudFront'
|
||
'iam_policy:Manage IAM policies for users, groups, and roles'
|
||
'include_vars:Load variables from files, dynamically within a task.'
|
||
'ini_file:Tweak settings in INI files'
|
||
'ios_command:Run arbitrary commands on ios devices.'
|
||
'ios_config:Manage Cisco IOS configuration sections'
|
||
'ios_template:Manage Cisco IOS device configurations over SSH'
|
||
'iosxr_command:Run arbitrary commands on ios devices.'
|
||
'iosxr_config:Manage Cisco IOS XR configuration sections'
|
||
'iosxr_template:Manage Cisco IOS device configurations over SSH'
|
||
'ipify_facts:Retrieve the public IP of your internet gateway.'
|
||
'iptables:Modify the systems iptables'
|
||
'irc:Send a message to an IRC channel'
|
||
'jabber:Send a message to jabber user or chat room'
|
||
'jboss:deploy applications to JBoss'
|
||
'jira:create and modify issues in a JIRA instance'
|
||
'junos_command:Execute arbitrary commands on Juniper JUNOS devices'
|
||
'junos_config:Manage Juniper JUNOS configuration sections'
|
||
'junos_template:Manage Juniper JUNOS device configurations'
|
||
'kernel_blacklist:Blacklist kernel modules'
|
||
'keystone_user(D):Manage OpenStack Identity (keystone) users, tenants and roles'
|
||
'known_hosts:Add or remove a host from the ``known_hosts`` file'
|
||
'layman:Manage Gentoo overlays'
|
||
'librato_annotation:create an annotation in librato'
|
||
'lineinfile:Ensure a particular line is in a file, or replace an existing line using a back-referenced regular expression.'
|
||
'linode:create / delete / stop / restart an instance in Linode Public Cloud'
|
||
'lldp:get details reported by lldp'
|
||
'locale_gen:Creates or removes locales.'
|
||
'logentries:Module for tracking logs via logentries.com'
|
||
'lvg:Configure LVM volume groups'
|
||
'lvol:Configure LVM logical volumes'
|
||
'lxc_container:Manage LXC Containers'
|
||
'macports:Package manager for MacPorts'
|
||
'mail:Send an email'
|
||
'maven_artifact:Downloads an Artifact from a Maven Repository'
|
||
'modprobe:Add or remove kernel modules'
|
||
'mongodb_user:Adds or removes a user from a MongoDB database.'
|
||
'monit:Manage the state of a program monitored via Monit'
|
||
'mount:Control active and configured mount points'
|
||
'mqtt:Publish a message on an MQTT topic for the IoT'
|
||
'mysql_db:Add or remove MySQL databases from a remote host.'
|
||
'mysql_replication:Manage MySQL replication'
|
||
'mysql_user:Adds or removes a user from a MySQL database.'
|
||
'mysql_variables:Manage MySQL global variables'
|
||
'nagios:Perform common tasks in Nagios related to downtime and notifications.'
|
||
'netscaler:Manages Citrix NetScaler entities'
|
||
'newrelic_deployment:Notify newrelic about app deployments'
|
||
'nexmo:Send a SMS via nexmo'
|
||
'nmcli:Manage Networking'
|
||
'nova_compute(D):Create/Delete VMs from OpenStack'
|
||
'nova_keypair(D):Add/Delete key pair from nova'
|
||
'npm:Manage node.js packages with npm'
|
||
'nxos_command:Run arbitrary command on Cisco NXOS devices'
|
||
'nxos_config:Manage Cisco NXOS configuration sections'
|
||
'nxos_nxapi:Manage NXAPI configuration on an NXOS device.'
|
||
'nxos_template:Manage Cisco NXOS device configurations'
|
||
'ohai:Returns inventory data from *Ohai*'
|
||
'open_iscsi:Manage iscsi targets with open-iscsi'
|
||
'openbsd_pkg:Manage packages on OpenBSD.'
|
||
'openvswitch_bridge:Manage Open vSwitch bridges'
|
||
'openvswitch_db:Configure open vswitch database.'
|
||
'openvswitch_port:Manage Open vSwitch ports'
|
||
'opkg:Package manager for OpenWrt'
|
||
'ops_command:Run arbitrary commands on OpenSwitch devices.'
|
||
'ops_config:Manage OpenSwitch configuration using CLI'
|
||
'ops_template:Push configuration to OpenSwitch'
|
||
'os_auth:Retrieve an auth token'
|
||
'os_client_config:Get OpenStack Client config'
|
||
'os_flavor_facts:Retrieve facts about one or more flavors'
|
||
'os_floating_ip:Add/Remove floating IP from an instance'
|
||
'os_group:Manage OpenStack Identity Groups'
|
||
'os_image:Add/Delete images from OpenStack Cloud'
|
||
'os_image_facts:Retrieve facts about an image within OpenStack.'
|
||
'os_ironic:Create/Delete Bare Metal Resources from OpenStack'
|
||
'os_ironic_node:Activate/Deactivate Bare Metal Resources from OpenStack'
|
||
'os_keypair:Add/Delete a keypair from OpenStack'
|
||
'os_keystone_domain:Manage OpenStack Identity Domains'
|
||
'os_keystone_role:Manage OpenStack Identity Roles'
|
||
'os_network:Creates/removes networks from OpenStack'
|
||
'os_networks_facts:Retrieve facts about one or more OpenStack networks.'
|
||
'os_nova_flavor:Manage OpenStack compute flavors'
|
||
'os_object:Create or Delete objects and containers from OpenStack'
|
||
'os_port:Add/Update/Delete ports from an OpenStack cloud.'
|
||
'os_project:Manage OpenStack Projects'
|
||
'os_router:Create or delete routers from OpenStack'
|
||
'os_security_group:Add/Delete security groups from an OpenStack cloud.'
|
||
'os_security_group_rule:Add/Delete rule from an existing security group'
|
||
'os_server:Create/Delete Compute Instances from OpenStack'
|
||
'os_server_actions:Perform actions on Compute Instances from OpenStack'
|
||
'os_server_facts:Retrieve facts about one or more compute instances'
|
||
'os_server_volume:Attach/Detach Volumes from OpenStack VM’s'
|
||
'os_subnet:Add/Remove subnet to an OpenStack network'
|
||
'os_subnets_facts:Retrieve facts about one or more OpenStack subnets.'
|
||
'os_user:Manage OpenStack Identity Users'
|
||
'os_user_group:Associate OpenStack Identity users and groups'
|
||
'os_volume:Create/Delete Cinder Volumes'
|
||
'osx_defaults:osx_defaults allows users to read, write, and delete Mac OS X user defaults from Ansible'
|
||
'osx_say:Makes an OSX computer to speak.'
|
||
'ovirt:oVirt/RHEV platform management'
|
||
'package:Generic OS package manager'
|
||
'pacman:Manage packages with *pacman*'
|
||
'pagerduty:Create PagerDuty maintenance windows'
|
||
'pagerduty_alert:Trigger, acknowledge or resolve PagerDuty incidents'
|
||
'pam_limits:Modify Linux PAM limits'
|
||
'patch:Apply patch files using the GNU patch tool.'
|
||
'pause:Pause playbook execution'
|
||
'pear:Manage pear/pecl packages'
|
||
'ping:Try to connect to host, verify a usable python and return ``pong`` on success.'
|
||
'pingdom:Pause/unpause Pingdom alerts'
|
||
'pip:Manages Python library dependencies.'
|
||
'pkg5:Manages packages with the Solaris 11 Image Packaging System'
|
||
'pkg5_publisher:Manages Solaris 11 Image Packaging System publishers'
|
||
'pkgin:Package manager for SmartOS, NetBSD, et al.'
|
||
'pkgng:Package manager for FreeBSD >= 9.0'
|
||
'pkgutil:Manage CSW-Packages on Solaris'
|
||
'portage:Package manager for Gentoo'
|
||
'portinstall:Installing packages from FreeBSD’s ports system'
|
||
'postgresql_db:Add or remove PostgreSQL databases from a remote host.'
|
||
'postgresql_ext:Add or remove PostgreSQL extensions from a database.'
|
||
'postgresql_lang:Adds, removes or changes procedural languages with a PostgreSQL database.'
|
||
'postgresql_privs:Grant or revoke privileges on PostgreSQL database objects.'
|
||
'postgresql_user:Adds or removes a users (roles) from a PostgreSQL database.'
|
||
'profitbricks:Create, destroy, start, stop, and reboot a ProfitBricks virtual machine.'
|
||
'profitbricks_datacenter:Create or destroy a ProfitBricks Virtual Datacenter.'
|
||
'profitbricks_nic:Create or Remove a NIC.'
|
||
'profitbricks_volume:Create or destroy a volume.'
|
||
'profitbricks_volume_attachments:Attach or detach a volume.'
|
||
'proxmox:management of instances in Proxmox VE cluster'
|
||
'proxmox_template:management of OS templates in Proxmox VE cluster'
|
||
'puppet:Runs puppet'
|
||
'pushbullet:Sends notifications to Pushbullet'
|
||
'pushover:Send notifications via https'
|
||
'quantum_floating_ip(D):Add/Remove floating IP from an instance'
|
||
'quantum_floating_ip_associate(D):Associate or disassociate a particular floating IP with an instance'
|
||
'quantum_network(D):Creates/Removes networks from OpenStack'
|
||
'quantum_router(D):Create or Remove router from openstack'
|
||
'quantum_router_gateway(D):set/unset a gateway interface for the router with the specified external network'
|
||
'quantum_router_interface(D):Attach/Dettach a subnet’s interface to a router'
|
||
'quantum_subnet(D):Add/remove subnet from a network'
|
||
'rabbitmq_binding:This module manages rabbitMQ bindings'
|
||
'rabbitmq_exchange:This module manages rabbitMQ exchanges'
|
||
'rabbitmq_parameter:Adds or removes parameters to RabbitMQ'
|
||
'rabbitmq_plugin:Adds or removes plugins to RabbitMQ'
|
||
'rabbitmq_policy:Manage the state of policies in RabbitMQ.'
|
||
'rabbitmq_queue:This module manages rabbitMQ queues'
|
||
'rabbitmq_user:Adds or removes users to RabbitMQ'
|
||
'rabbitmq_vhost:Manage the state of a virtual host in RabbitMQ'
|
||
'raw:Executes a low-down and dirty SSH command'
|
||
'rax:create / delete an instance in Rackspace Public Cloud'
|
||
'rax_cbs:Manipulate Rackspace Cloud Block Storage Volumes'
|
||
'rax_cbs_attachments:Manipulate Rackspace Cloud Block Storage Volume Attachments'
|
||
'rax_cdb:create/delete or resize a Rackspace Cloud Databases instance'
|
||
'rax_cdb_database:create / delete a database in the Cloud Databases'
|
||
'rax_cdb_user:create / delete a Rackspace Cloud Database'
|
||
'rax_clb:create / delete a load balancer in Rackspace Public Cloud'
|
||
'rax_clb_nodes:add, modify and remove nodes from a Rackspace Cloud Load Balancer'
|
||
'rax_clb_ssl:Manage SSL termination for a Rackspace Cloud Load Balancer.'
|
||
'rax_dns:Manage domains on Rackspace Cloud DNS'
|
||
'rax_dns_record:Manage DNS records on Rackspace Cloud DNS'
|
||
'rax_facts:Gather facts for Rackspace Cloud Servers'
|
||
'rax_files:Manipulate Rackspace Cloud Files Containers'
|
||
'rax_files_objects:Upload, download, and delete objects in Rackspace Cloud Files'
|
||
'rax_identity:Load Rackspace Cloud Identity'
|
||
'rax_keypair:Create a keypair for use with Rackspace Cloud Servers'
|
||
'rax_meta:Manipulate metadata for Rackspace Cloud Servers'
|
||
'rax_mon_alarm:Create or delete a Rackspace Cloud Monitoring alarm.'
|
||
'rax_mon_check:Create or delete a Rackspace Cloud Monitoring check for an existing entity.'
|
||
'rax_mon_entity:Create or delete a Rackspace Cloud Monitoring entity'
|
||
'rax_mon_notification:Create or delete a Rackspace Cloud Monitoring notification.'
|
||
'rax_mon_notification_plan:Create or delete a Rackspace Cloud Monitoring notification plan.'
|
||
'rax_network:create / delete an isolated network in Rackspace Public Cloud'
|
||
'rax_queue:create / delete a queue in Rackspace Public Cloud'
|
||
'rax_scaling_group:Manipulate Rackspace Cloud Autoscale Groups'
|
||
'rax_scaling_policy:Manipulate Rackspace Cloud Autoscale Scaling Policy'
|
||
'rds:create, delete, or modify an Amazon rds instance'
|
||
'rds_param_group:manage RDS parameter groups'
|
||
'rds_subnet_group:manage RDS database subnet groups'
|
||
'redhat_subscription:Manage Red Hat Network registration and subscriptions using the ``subscription-manager`` command'
|
||
'redis:Various redis commands, slave and flush'
|
||
'replace:Replace all instances of a particular string in a file using a back-referenced regular expression.'
|
||
'rhn_channel:Adds or removes Red Hat software channels'
|
||
'rhn_register:Manage Red Hat Network registration using the ``rhnreg_ks`` command'
|
||
'riak:This module handles some common Riak operations'
|
||
'rollbar_deployment:Notify Rollbar about app deployments'
|
||
'route53:add or delete entries in Amazons Route53 DNS service'
|
||
'route53_facts:Retrieves route53 details using AWS methods'
|
||
'route53_health_check:add or delete health-checks in Amazons Route53 DNS service'
|
||
'route53_zone:add or delete Route53 zones'
|
||
'rpm_key:Adds or removes a gpg key from the rpm db'
|
||
's3:manage objects in S3.'
|
||
's3_bucket:Manage s3 buckets in AWS'
|
||
's3_lifecycle:Manage s3 bucket lifecycle rules in AWS'
|
||
's3_logging:Manage logging facility of an s3 bucket in AWS'
|
||
'script:Runs a local script on a remote node after transferring it'
|
||
'seboolean:Toggles SELinux booleans.'
|
||
'selinux:Change policy and state of SELinux'
|
||
'selinux_permissive:Change permissive domain in SELinux policy'
|
||
'sendgrid:Sends an email with the SendGrid API'
|
||
'sensu_check:Manage Sensu checks'
|
||
'seport:Manages SELinux network port type definitions'
|
||
'service:Manage services.'
|
||
'set_fact:Set host facts from a task'
|
||
'setup:Gathers facts about remote hosts'
|
||
'shell:Execute commands in nodes.'
|
||
'slack:Send Slack notifications'
|
||
'slackpkg:Package manager for Slackware >= 12.2'
|
||
'slurp:Slurps a file from remote nodes'
|
||
'snmp_facts:Retrieve facts for a device using SNMP.'
|
||
'sns:Send Amazon Simple Notification Service (SNS) messages'
|
||
'sns_topic:Manages AWS SNS topics and subscriptions'
|
||
'solaris_zone:Manage Solaris zones'
|
||
'sqs_queue:Creates or deletes AWS SQS queues.'
|
||
'stackdriver:Send code deploy and annotation events to stackdriver'
|
||
'stat:retrieve file or file system status'
|
||
'sts_assume_role:Assume a role using AWS Security Token Service and obtain temporary credentials'
|
||
'subversion:Deploys a subversion repository.'
|
||
'supervisorctl:Manage the state of a program or group of programs running via supervisord'
|
||
'svc:Manage daemontools services.'
|
||
'svr4pkg:Manage Solaris SVR4 packages'
|
||
'swdepot:Manage packages with swdepot package manager (HP-UX)'
|
||
'synchronize:Uses rsync to make synchronizing file paths in your playbooks quick and easy.'
|
||
'sysctl:Manage entries in sysctl.conf.'
|
||
'taiga_issue:Creates/deletes an issue in a Taiga Project Management Platform'
|
||
'template:Templates a file out to a remote server.'
|
||
'twilio:Sends a text message to a mobile phone through Twilio.'
|
||
'typetalk:Send a message to typetalk'
|
||
'ufw:Manage firewall with UFW'
|
||
'unarchive:Unpacks an archive after (optionally) copying it from the local machine.'
|
||
'uptimerobot:Pause and start Uptime Robot monitoring'
|
||
'uri:Interacts with webservices'
|
||
'urpmi:Urpmi manager'
|
||
'user:Manage user accounts'
|
||
'vca_fw:add remove firewall rules in a gateway in a vca'
|
||
'vca_nat:add remove nat rules in a gateway in a vca'
|
||
'vca_vapp:Manages vCloud Air vApp instances.'
|
||
'vertica_configuration:Updates Vertica configuration parameters.'
|
||
'vertica_facts:Gathers Vertica database facts.'
|
||
'vertica_role:Adds or removes Vertica database roles and assigns roles to them.'
|
||
'vertica_schema:Adds or removes Vertica database schema and roles.'
|
||
'vertica_user:Adds or removes Vertica database users and assigns roles.'
|
||
'virt:Manages virtual machines supported by libvirt'
|
||
'virt_net:Manage libvirt network configuration'
|
||
'virt_pool:Manage libvirt storage pools'
|
||
'vmware_cluster:Create VMware vSphere Cluster'
|
||
'vmware_datacenter:Manage VMware vSphere Datacenters'
|
||
'vmware_dns_config:Manage VMware ESXi DNS Configuration'
|
||
'vmware_dvs_host:Add or remove a host from distributed virtual switch'
|
||
'vmware_dvs_portgroup:Create or remove a Distributed vSwitch portgroup'
|
||
'vmware_dvswitch:Create or remove a distributed vSwitch'
|
||
'vmware_host:Add/remove ESXi host to/from vCenter'
|
||
'vmware_migrate_vmk:Migrate a VMK interface from VSS to VDS'
|
||
'vmware_portgroup:Create a VMware portgroup'
|
||
'vmware_target_canonical_facts:Return canonical (NAA) from an ESXi host'
|
||
'vmware_vm_facts:Return basic facts pertaining to a vSphere virtual machine guest'
|
||
'vmware_vm_shell:Execute a process in VM'
|
||
'vmware_vm_vss_dvs_migrate:Migrates a virtual machine from a standard vswitch to distributed'
|
||
'vmware_vmkernel:Create a VMware VMkernel Interface'
|
||
'vmware_vmkernel_ip_config:Configure the VMkernel IP Address'
|
||
'vmware_vsan_cluster:Configure VSAN clustering on an ESXi host'
|
||
'vmware_vswitch:Add a VMware Standard Switch to an ESXi host'
|
||
'vsphere_copy:Copy a file to a vCenter datastore'
|
||
'vsphere_guest:Create/delete/manage a guest VM through VMware vSphere.'
|
||
'wait_for:Waits for a condition before continuing.'
|
||
'webfaction_app:Add or remove applications on a Webfaction host'
|
||
'webfaction_db:Add or remove a database on Webfaction'
|
||
'webfaction_domain:Add or remove domains and subdomains on Webfaction'
|
||
'webfaction_mailbox:Add or remove mailboxes on Webfaction'
|
||
'webfaction_site:Add or remove a website on a Webfaction host'
|
||
'win_acl:Set file/directory permissions for a system user or group.'
|
||
'win_chocolatey:Installs packages using chocolatey'
|
||
'win_copy:Copies files to remote locations on windows hosts.'
|
||
'win_dotnet_ngen:Runs ngen to recompile DLLs after .NET updates'
|
||
'win_environment:Modifies environment variables on windows hosts.'
|
||
'win_feature:Installs and uninstalls Windows Features'
|
||
'win_file:Creates, touches or removes files or directories.'
|
||
'win_file_version:Get DLL or EXE file build version'
|
||
'win_firewall_rule:Windows firewall automation'
|
||
'win_get_url:Fetches a file from a given URL'
|
||
'win_group:Add and remove local groups'
|
||
'win_iis_virtualdirectory:Configures a virtual directory in IIS.'
|
||
'win_iis_webapplication:Configures a IIS Web application.'
|
||
'win_iis_webapppool:Configures a IIS Web Application Pool.'
|
||
'win_iis_webbinding:Configures a IIS Web site.'
|
||
'win_iis_website:Configures a IIS Web site.'
|
||
'win_lineinfile:Ensure a particular line is in a file, or replace an existing line using a back-referenced regular expression.'
|
||
'win_msi:Installs and uninstalls Windows MSI files'
|
||
'win_nssm:NSSM '
|
||
'win_package:Installs/Uninstalls a installable package, either from local file system or url'
|
||
'win_ping:A windows version of the classic ping module.'
|
||
'win_regedit:Add, Edit, or Remove Registry Keys and Values'
|
||
'win_regmerge:Merges the contents of a registry file into the windows registry'
|
||
'win_scheduled_task:Manage scheduled tasks'
|
||
'win_service:Manages Windows services'
|
||
'win_share:Manage Windows shares'
|
||
'win_stat:returns information about a Windows file'
|
||
'win_template:Templates a file out to a remote server.'
|
||
'win_timezone:Sets Windows machine timezone'
|
||
'win_unzip:Unzips compressed files and archives on the Windows node'
|
||
'win_updates:Download and install Windows updates'
|
||
'win_uri:Interacts with webservices.'
|
||
'win_user:Manages local Windows user accounts'
|
||
'win_webpicmd:Installs packages using Web Platform Installer command-line'
|
||
'xattr:set/retrieve extended attributes'
|
||
'xenserver_facts:get facts reported on xenserver'
|
||
'yum:Manages packages with the *yum* package manager'
|
||
'yum_repository:Add and remove YUM repositories'
|
||
'zabbix_group:Zabbix host groups creates/deletes'
|
||
'zabbix_host:Zabbix host creates/updates/deletes'
|
||
'zabbix_hostmacro:Zabbix host macro creates/updates/deletes'
|
||
'zabbix_maintenance:Create Zabbix maintenance windows'
|
||
'zabbix_screen:Zabbix screen creates/updates/deletes'
|
||
'zfs:Manage zfs'
|
||
'znode:Create, delete, retrieve, and update znodes using ZooKeeper.'
|
||
'zypper:Manage packages on SUSE and openSUSE'
|
||
'zypper_repository:Add and remove Zypper repositories'
|
||
)
|
||
|
||
|
||
_ansible ()
|
||
{
|
||
local curcontext="$curcontext" state line
|
||
typeset -A opt_args
|
||
|
||
_arguments -C -W \
|
||
'1:pattern:->pattern'\
|
||
"(-a --args)"{-a,--args}"[ARGS module arguments]:arguments:(ARG)"\
|
||
'--ask-become-pass[ask for privilege escalation password]'\
|
||
"(-k --ask-pass)"{-k,--ask-pass}"[ask for connection password]"\
|
||
'--ask-su-pass[ask for su password (deprecated, use become)]'\
|
||
"(-K --ask-sudo-pass)"{-K,--ask-sudo-pass}"[ask for sudo password (deprecated, use become)]"\
|
||
'--ask-vault-pass[ask for vault password]'\
|
||
"(-B --background)"{-B,--background}"[DURATION run asynchronously for DURATION (s)]:duration:(DURATION)"\
|
||
"(-b --become)"{-b,--become}"[run operations with become (nopasswd implied)]"\
|
||
'--become-method[privilege escalation method to use (default=sudo)]:method:(sudo su pbrun pfexec runas doas)'\
|
||
'--become-user[run operations as this user (default=root)]:user:(USER)'\
|
||
"(-C --check)"{-C,--check}"[don't make any changes]"\
|
||
"(-c --connection)"{-c,--connection}"[CONNECTION connection type to use (default=smart)]:connection type:(smart ssh local chroot)"\
|
||
"(-D --diff)"{-D,--diff}"[show differences when changing (small) files and templates]"\
|
||
"(-e --extra-vars)"{-e,--extra-vars}"[set additional variables as key=value or YAML/JSON]"\
|
||
"(-f --forks)"{-f,--forks}"[FORKS number of parallel processes to use (default=5)]:forks:(5)"\
|
||
"(-h --help)"{-h,--help}"[help message]"\
|
||
"(-i --inventory-file)"{-i,--inventory-file}"[INVENTORY specify inventory host file]:inventory file:_files"\
|
||
"(-l --limit)"{-l,--limit}"[SUBSET further limit selected hosts to an additional pattern]:subset pattern:->pattern"\
|
||
'--list-hosts[outputs a list of matching hosts. Does not execute anything else]'\
|
||
"(-m --module-name)"{-m,--module-name}"[MODULE_NAME module name (default=command)]:module name:->module"\
|
||
"(-M --module-path)"{-M,--module-path}"[MODULE_PATH specify path to module library (default=None)]:module path:_files -/"\
|
||
'--new-vault-password-file[new vault password file for rekey]:new vault password file:_files'\
|
||
"(-o --one-line)"{-o,--one-line}"[condense output]"\
|
||
'--output[output file name for encrypt or decrypt; use - for stdout]:output file:_files'\
|
||
"(-P --poll)"{-P,--poll}"[POLL_INTERVAL set the poll interval (s) if using -B (default=15)]:poll interval:(15)"\
|
||
'--private-key[PRIVATE_KEY_FILE use this file to authenticate the connection]:private key file:_files'\
|
||
'--scp-extra-args[specify extra arguments to pass to scp only]'\
|
||
'--sftp-extra-args[specify extra arguments to pass to sftp only]'\
|
||
'--ssh-common-args[specify common arguments to pass to sftp/scp/ssh]'\
|
||
'--ssh-extra-args[specify extra arguments to pass to ssh only]'\
|
||
"(-S --su)"{-S,--su}"[run operations with su (deprecated, use become)]"\
|
||
"(-R --su-user)"{-R,--su-user}"[SU_USER run operations with su as this user (default=root) (deprecated, use become)]:su user:(root)"\
|
||
"(-s --sudo)"{-s,--sudo}"[run operations with sudo (nopasswd) (deprecated, use become)]"\
|
||
"(-U --sudo-user)"{-U,--sudo-user}"[SUDO_USER desired sudo user (default=root) (deprecated, use become)]:su user:(root)"\
|
||
'--syntax-check[perform a syntax check on the playbook, but do not execute it]'\
|
||
"(-T --timeout)"{-T,--timeout}"[TIMEOUT override the SSH timeout (s) (default=10)]:ssh timeout:(10)"\
|
||
"(-t --tree)"{-t,--tree}"[OUTPUT_DIRECTORY log output to this directory]:output directory:_files -/"\
|
||
"(-u --user)"{-u,--user}"[REMOTE_USER connect as this user (default=${USER})]:connect as user:(${USER})"\
|
||
"--vault-password-file[VAULT_PASSWORD_FILE vault password file]:vault password file:_files"\
|
||
"(-v --verbose)"{-v,--verbose}"[verbose mode (-vvv for more, -vvvv to enable connection debugging)]"\
|
||
"--version[show program's version number and exit]"\
|
||
|
||
case $state in
|
||
pattern)
|
||
_arguments '*:feature:__host_list'
|
||
_arguments '*:feature:__group_list'
|
||
;;
|
||
module)
|
||
_describe -t commands "modules" _modules
|
||
;;
|
||
esac
|
||
}
|
||
|
||
_ansible "$@"
|
||
|
||
# Local Variables:
|
||
# mode: Shell-Script
|
||
# sh-indentation: 2
|
||
# indent-tabs-mode: nil
|
||
# sh-basic-offset: 2
|
||
# End:
|
||
# vim: ft=zsh sw=2 ts=2 et
|