2018-04-05 13:06:54 +02:00

710 lines
37 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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 whats 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 VMs'
'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 FreeBSDs 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 subnets 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