Compare commits
69 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| e07227194b | |||
| 0a47cf5ee1 | |||
| 69fbc5ad1f | |||
| ce6bd0c96d | |||
| f5d7005e6c | |||
| 9961c1e2ef | |||
| 33be7526c7 | |||
| 4f3b671e47 | |||
| 84f485620c | |||
| c8245f3440 | |||
| aed907958d | |||
| 06923cd1f6 | |||
| 23831668c1 | |||
| 4b7f2579a8 | |||
| 9441bd723f | |||
| a94a228cb4 | |||
| a908bd6a8f | |||
| 6f05eb9b69 | |||
| 731ef69eae | |||
| cff8ea1434 | |||
| 3fd77edecd | |||
| d3b543c2a2 | |||
| ee4bb97ab7 | |||
| 4e79835b34 | |||
| 6701726ba5 | |||
| 28ca655217 | |||
| d5c5390acf | |||
| 736b554691 | |||
| f834c62ffb | |||
| 558ca593f3 | |||
| c98b828950 | |||
| 3934cd7601 | |||
| 6aafb42f2f | |||
| ee268535f6 | |||
| aaa413db3b | |||
| feb497a9e8 | |||
| 1c77f95312 | |||
| bde44f9df4 | |||
| 9d9431109b | |||
| 08a6ac3fc7 | |||
| 84cc3e2c8a | |||
| bb3e7f4719 | |||
| 25162c98ec | |||
| d21d3677a6 | |||
| 514f9232a0 | |||
| b0f7296dde | |||
| db7149da1c | |||
| 5252b7bc93 | |||
| 31d1afcb19 | |||
| 4abf23d34d | |||
| 88e4051afc | |||
| c16572b6e2 | |||
| 339c05bb88 | |||
| ac16efe289 | |||
| 4448391244 | |||
| 946e9473a9 | |||
| 63b1be4f37 | |||
| d779f88149 | |||
| 5be35f270c | |||
| 96f6244336 | |||
| eef726258d | |||
| f8fcbc6bd7 | |||
| e9bf75156e | |||
| e5b013ea41 | |||
| e4c935835f | |||
| c9453daf28 | |||
| b2ea92d36d | |||
| b1563c8411 | |||
| eedd92d711 |
@ -1,5 +0,0 @@
|
||||
team = "ansible"
|
||||
repo = "ansible"
|
||||
check_sha = "f31421576b00f0b167cdbe61217c31c21a41ac02" # the very first commit in repo
|
||||
fix_commit_msg = false # Don't replace "#" with "GH-"
|
||||
default_branch = "devel"
|
||||
26
.coveragerc
26
.coveragerc
@ -1,26 +0,0 @@
|
||||
# This configuration file is used for manual execution of coverage
|
||||
# as well as for tests run through ansible-test.
|
||||
|
||||
[run]
|
||||
branch = True
|
||||
|
||||
# Enable concurrency. This also enables parallel mode, which results in
|
||||
# multiple coverage files being created. Concurrency allows us to collect
|
||||
# results from multiple tests simultaneously, as well as supporting multiple
|
||||
# test runs, such as from integration tests.
|
||||
concurrency = multiprocessing
|
||||
parallel = True
|
||||
|
||||
# When running tests through ansible-test, this option is overridden by
|
||||
# the COVERAGE_FILE environment variable. This option is present for
|
||||
# convenience when running coverage manually from this directory.
|
||||
data_file = test/results/coverage/coverage
|
||||
|
||||
# Don't collect or report code coverage from files matching these patterns.
|
||||
omit =
|
||||
*/python*/dist-packages/*
|
||||
*/python*/site-packages/*
|
||||
*/python*/distutils/*
|
||||
*/pyshared/*
|
||||
*/pytest
|
||||
*/AnsiballZ_*.py
|
||||
2
.gitattributes
vendored
2
.gitattributes
vendored
@ -1,2 +0,0 @@
|
||||
.github/ export-ignore
|
||||
hacking/ export-ignore
|
||||
922
.github/BOTMETA.yml
vendored
922
.github/BOTMETA.yml
vendored
@ -1,922 +0,0 @@
|
||||
# BOTMETA V2.0
|
||||
#
|
||||
# Data used by ansibot to identify who works on each file in the repo.
|
||||
# If you have questions about this data format, please join #ansible-devel
|
||||
# on irc.freenode and ping anyone who is op'ed.
|
||||
#
|
||||
# There are 3 primary sections of the data
|
||||
#
|
||||
# automerge
|
||||
# During release freezes, the bot uses this key to know if
|
||||
# automerging should be on or off. It is a boolean value.
|
||||
#
|
||||
# macros
|
||||
# Macros are used to shorten and group some strings and lists.
|
||||
# Any macro with a prefix of "team_" is a maintainer group for
|
||||
# various files.
|
||||
#
|
||||
# files
|
||||
# Each key represents a specific file in the repository.
|
||||
# If a module is not listed, it's maintainers default to the authors
|
||||
# If the file has no maintainers key, the value of the key is
|
||||
# presumed to be the maintainers.
|
||||
#
|
||||
# Keys:
|
||||
# maintainers - these people can shipit and automerge
|
||||
# notified - these people are always subscribed to relevant issues
|
||||
# ignored - these people should never be notified
|
||||
# deprecated - this file is deprecated but probably not yet renamed
|
||||
# keywords - used to identify this file based on the issue description
|
||||
# support - used for files without internal metadata
|
||||
# labels - list of GitHub labels to apply. Path components of 'file' parent key
|
||||
# which are valid GitHub labels are automatically added.
|
||||
#
|
||||
|
||||
automerge: True
|
||||
files:
|
||||
.github/BOTMETA.yml:
|
||||
labels: botmeta
|
||||
$modules/cloud/amazon/:
|
||||
ignored: erydo seiffert simplesteph
|
||||
$modules/cloud/amazon/aws_api_gateway.py: willthames
|
||||
$modules/cloud/amazon/aws_kms.py: willthames
|
||||
$modules/cloud/amazon/cloudformation.py: ryansb tedder
|
||||
$modules/cloud/amazon/cloudfront_facts.py: willthames
|
||||
$modules/cloud/amazon/cloudtrail.py: $team_ansible
|
||||
$modules/cloud/amazon/ec2.py: $team_ansible
|
||||
$modules/cloud/amazon/ec2_ami.py: willthames
|
||||
$modules/cloud/amazon/ec2_asg.py: $team_ansible s-hertel ryansb
|
||||
$modules/cloud/amazon/ec2_group.py: $team_ansible
|
||||
$modules/cloud/amazon/ec2_group_facts.py: willthames
|
||||
$modules/cloud/amazon/ec2_instance.py: Shaps
|
||||
$modules/cloud/amazon/ec2_instance_facts.py: willthames
|
||||
$modules/cloud/amazon/ec2_key.py: $team_ansible
|
||||
$modules/cloud/amazon/ec2_lc.py: $team_ansible
|
||||
$modules/cloud/amazon/ec2_lc_facts.py: willthames
|
||||
$modules/cloud/amazon/ec2_metric_alarm.py: $team_ansible
|
||||
$modules/cloud/amazon/ec2_tag.py: $team_ansible
|
||||
$modules/cloud/amazon/ec2_vol.py: $team_ansible
|
||||
$modules/cloud/amazon/ec2_vpc_endpoint.py: willthames
|
||||
$modules/cloud/amazon/ec2_vpc_endpoint_facts.py: willthames
|
||||
$modules/cloud/amazon/ec2_vpc_igw.py: willthames
|
||||
$modules/cloud/amazon/ec2_vpc_igw_facts.py: willthames
|
||||
$modules/cloud/amazon/ec2_vpc_nat_gateway_facts.py: willthames
|
||||
$modules/cloud/amazon/ec2_vpc_net.py: $team_ansible
|
||||
$modules/cloud/amazon/ec2_vpc_net_facts.py: whiter
|
||||
$modules/cloud/amazon/ec2_vpc_peering_facts.py: willthames
|
||||
$modules/cloud/amazon/ec2_vpc_subnet.py: willthames
|
||||
$modules/cloud/amazon/ecs_cluster.py: willthames
|
||||
$modules/cloud/amazon/ecs_ecr.py: willthames
|
||||
$modules/cloud/amazon/ecs_service.py: willthames
|
||||
$modules/cloud/amazon/ecs_service_facts.py: willthames
|
||||
$modules/cloud/amazon/ecs_task.py: willthames
|
||||
$modules/cloud/amazon/ecs_taskdefinition.py: willthames
|
||||
$modules/cloud/amazon/ecs_taskdefinition_facts.py: willthames
|
||||
$modules/cloud/amazon/elasticache.py: alachaum
|
||||
$modules/cloud/amazon/elb_target_group_facts.py: willthames
|
||||
$modules/cloud/amazon/iam.py: $team_ansible
|
||||
$modules/cloud/amazon/iam_cert.py: $team_ansible
|
||||
$modules/cloud/amazon/iam_group.py: willthames
|
||||
$modules/cloud/amazon/iam_managed_policy.py: willthames
|
||||
$modules/cloud/amazon/iam_policy.py: $team_ansible
|
||||
$modules/cloud/amazon/rds_param_group.py: scottanderson42
|
||||
$modules/cloud/amazon/rds_subnet_group.py: scottanderson42
|
||||
$modules/cloud/amazon/route53_health_check.py: willthames
|
||||
$modules/cloud/amazon/sns.py: willthames
|
||||
$modules/cloud/amazon/sns_topic.py: willthames
|
||||
$modules/cloud/atomic/: krsacme
|
||||
$modules/cloud/azure/:
|
||||
ignored: chouseknecht jwhitbeck
|
||||
maintainers: $team_azure
|
||||
$modules/cloud/azure/azure_rm_dnsrecordset.py:
|
||||
ignored: ozboms
|
||||
$modules/cloud/centurylink/: clc-runner
|
||||
$modules/cloud/cloudstack/: $team_cloudstack
|
||||
$modules/cloud/digital_ocean/: BondAnthony
|
||||
$modules/cloud/digital_ocean/digital_ocean.py: alukovenko
|
||||
$modules/cloud/digital_ocean/digital_ocean_domain.py: alukovenko
|
||||
$modules/cloud/digital_ocean/digital_ocean_sshkey.py: alukovenko mgregson
|
||||
$modules/cloud/dimensiondata/dimensiondata_network.py: tintoy
|
||||
$modules/cloud/docker/:
|
||||
ignored: ThomasSteinbach
|
||||
$modules/cloud/docker/docker_container.py: $team_ansible felixfontein
|
||||
$modules/cloud/docker/docker_image.py: $team_ansible
|
||||
$modules/cloud/docker/docker_image_facts.py: $team_ansible
|
||||
$modules/cloud/docker/docker_network.py: olsaki
|
||||
$modules/cloud/docker/docker_service.py: $team_ansible
|
||||
$modules/cloud/google/:
|
||||
maintainers: rambleraptor erjohnso
|
||||
ignored: supertom
|
||||
$modules/cloud/google/gc_storage.py: supertom
|
||||
$modules/cloud/linode/linode.py: intheclouddan rwaweber
|
||||
$modules/cloud/lxd/: hnakamur
|
||||
$modules/cloud/memset/: analbeard
|
||||
$modules/cloud/misc/ovirt.py:
|
||||
ignored: vincentvdk
|
||||
maintainers: joshainglis karmab machacekondra mwperina
|
||||
$modules/cloud/misc/virt.py: $team_ansible
|
||||
$modules/cloud/misc/xenserver_facts.py:
|
||||
ignored: andyhky
|
||||
$modules/cloud/opennebula/: ilicmilan kustodian
|
||||
$modules/cloud/openstack/: $team_openstack
|
||||
$modules/cloud/ovirt/: machacekondra mwperina
|
||||
$modules/cloud/profitbricks/: baldwinSPC
|
||||
$modules/cloud/rackspace/:
|
||||
ignored: sivel angstwad
|
||||
$modules/cloud/univention/: 2-B
|
||||
$modules/cloud/vmware/:
|
||||
maintainers: $team_vmware
|
||||
ignored: jcpowermac mtnbikenc
|
||||
$modules/cloud/vmware/vmware_host.py: dagwieers
|
||||
$modules/cloud/vmware/vmware_vm_shell.py: chrrrles
|
||||
$modules/cloud/vmware/_vsphere_guest.py: dagwieers
|
||||
$modules/cloud/vultr/: $team_vultr
|
||||
$modules/cloud/webfaction/: quentinsf
|
||||
$modules/clustering/k8s/: chouseknecht maxamillion fabianvf flaper87 willthames
|
||||
$modules/clustering/k8s/_kubernetes.py: supertom
|
||||
$modules/clustering/openshift/: chouseknecht maxamillion fabianvf flaper87
|
||||
$modules/commands/command.py: $team_ansible
|
||||
$modules/commands/raw.py: $team_ansible
|
||||
$modules/commands/script.py: $team_ansible
|
||||
$modules/commands/shell.py: $team_ansible
|
||||
$modules/crypto/: Spredzy
|
||||
$modules/crypto/acme/: resmo felixfontein
|
||||
$modules/database/influxdb/: kamsz
|
||||
$modules/database/mssql/mssql_db.py: Jmainguy kenichi-ogawa-1988
|
||||
$modules/database/postgresql/: matburt
|
||||
$modules/database/postgresql/postgresql_db.py: $team_ansible
|
||||
$modules/database/postgresql/postgresql_user.py: $team_ansible nerzhul
|
||||
$modules/database/proxysql/: bmildren
|
||||
$modules/database/vertica/: dareko
|
||||
$modules/files/acl.py:
|
||||
ignored: astorije
|
||||
maintainers: $team_ansible
|
||||
$modules/files/assemble.py: $team_ansible
|
||||
$modules/files/copy.py: $team_ansible
|
||||
$modules/files/fetch.py: $team_ansible
|
||||
$modules/files/file.py: $team_ansible
|
||||
$modules/files/find.py: $team_ansible
|
||||
$modules/files/lineinfile.py: $team_ansible samdoran
|
||||
$modules/files/synchronize.py: $team_ansible
|
||||
$modules/files/template.py: $team_ansible
|
||||
$modules/files/unarchive.py:
|
||||
ignored: dagwieers
|
||||
labels: m:unarchive
|
||||
maintainers: pileofrogs
|
||||
$modules/files/xattr.py: $team_ansible
|
||||
$modules/files/xml.py:
|
||||
ignored: magnus919
|
||||
labels: m:xml
|
||||
maintainers: sm4rk0 cmprescott
|
||||
$modules/identity/cyberark/:
|
||||
notified: cyberark-bizdev
|
||||
$modules/identity/ipa/: $team_ipa
|
||||
$modules/identity/keycloak/: eikef
|
||||
$modules/inventory/add_host.py: $team_ansible
|
||||
$modules/inventory/group_by.py: $team_ansible
|
||||
$modules/messaging/rabbitmq_binding.py: $team_rabbitmq
|
||||
$modules/messaging/rabbitmq_exchange.py: $team_rabbitmq
|
||||
$modules/messaging/rabbitmq_parameter.py: $team_rabbitmq
|
||||
$modules/messaging/rabbitmq_plugin.py: $team_rabbitmq
|
||||
$modules/messaging/rabbitmq_policy.py: retr0h
|
||||
$modules/messaging/rabbitmq_queue.py: $team_rabbitmq
|
||||
$modules/messaging/rabbitmq_user.py: $team_rabbitmq
|
||||
$modules/messaging/rabbitmq_vhost.py:
|
||||
ignored: choffman
|
||||
maintainers: $team_rabbitmq
|
||||
$modules/monitoring/datadog_event.py:
|
||||
ignored: arturaz
|
||||
$modules/monitoring/logentries.py:
|
||||
ignored: ivanvanderbyl
|
||||
$modules/monitoring/monit.py: brian-brazil
|
||||
$modules/monitoring/zabbix/: eikef D3DeFi
|
||||
$modules/net_tools/basics/get_url.py: ptux
|
||||
$modules/net_tools/basics/slurp.py: $team_ansible
|
||||
$modules/net_tools/basics/uri.py: $team_ansible
|
||||
$modules/net_tools/cloudflare_dns.py: andreaso
|
||||
$modules/net_tools/exoscale/: resmo
|
||||
$modules/net_tools/ldap/: jtyr
|
||||
$modules/net_tools/lldp.py:
|
||||
ignored: andyhky
|
||||
$modules/net_tools/nios/:
|
||||
maintainers: $team_networking sganesh-infoblox
|
||||
labels:
|
||||
- networking
|
||||
- infoblox
|
||||
$modules/network/a10/: ericchou1 mischapeters
|
||||
$modules/network/aci/: $team_aci
|
||||
$modules/network/aireos/: jmighion
|
||||
$modules/network/aos/: dgarros jeremyschulman
|
||||
$modules/network/aruba/: jmighion
|
||||
$modules/network/asa/: ogenstad gdpak
|
||||
$modules/network/avi/: $team_avi
|
||||
$modules/network/bigswitch/: jayakody tedelhourani vuile
|
||||
$modules/network/citrix/netscaler.py: $team_ansible
|
||||
$modules/network/cloudengine/: QijunPan
|
||||
$modules/network/cnos/: dkasberg amuraleedhar
|
||||
$modules/network/cumulus/: $team_cumulus
|
||||
$modules/network/dellos10/: skg-net
|
||||
$modules/network/dellos6/: abirami-n skg-net
|
||||
$modules/network/dellos9/: dhivyap skg-net
|
||||
$modules/network/edgeos/: samdoran
|
||||
$modules/network/enos/: amuraleedhar
|
||||
$modules/network/eos/: trishnaguha
|
||||
$modules/network/exos/: rdvencioneck
|
||||
$modules/network/f5/:
|
||||
ignored: Etienne-Carriere mhite mryanlam perzizzle srvg wojtek0806 JoeReifel $team_networking
|
||||
maintainers: caphrim007
|
||||
$modules/network/files/: $team_networking
|
||||
$modules/network/fortios/: bjolivot
|
||||
$modules/network/illumos/: xen0l
|
||||
$modules/network/interface/: $team_networking
|
||||
$modules/network/ios/: rcarrillocruz
|
||||
$modules/network/iosxr/: rcarrillocruz gdpak
|
||||
$modules/network/ironware/: paulquack
|
||||
$modules/network/junos/: Qalthos ganeshrn
|
||||
$modules/network/layer2/: $team_networking
|
||||
$modules/network/layer3/: $team_networking
|
||||
$modules/network/meraki/: $team_meraki
|
||||
$modules/network/netconf/netconf_config.py: userlerueda $team_networking
|
||||
$modules/network/netconf/netconf_get.py: $team_networking
|
||||
$modules/network/netconf/netconf_rpc.py: $team_networking
|
||||
$modules/network/netscaler/: $team_netscaler
|
||||
$modules/network/netvisor/: $team_netvisor
|
||||
$modules/network/nos/: $team_extreme
|
||||
$modules/network/nuage/: pdellaert
|
||||
$modules/network/nxos/: $team_nxos
|
||||
$modules/network/nso/: $team_nso
|
||||
$modules/network/onyx/: $team_onyx
|
||||
$modules/network/openvswitch/:
|
||||
ignored: stygstra
|
||||
maintainers: $team_networking
|
||||
$modules/network/ordnance/: alexanderturner djh00t
|
||||
$modules/network/opx/: $team_dell
|
||||
$modules/network/ovs/:
|
||||
ignored: stygstra
|
||||
maintainers: rcarrillocruz
|
||||
$modules/network/panos/: ivanbojer jtschichold
|
||||
$modules/network/panos/panos_address.py: itdependsnetworks ivanbojer jtschichold
|
||||
$modules/network/protocol/: $team_networking
|
||||
$modules/network/routeros/: heuels
|
||||
$modules/network/routing/: $team_networking
|
||||
$modules/network/slxos/: $team_extreme
|
||||
$modules/network/sros/: privateip
|
||||
$modules/network/system/: $team_networking
|
||||
$modules/network/voss/: $team_extreme
|
||||
$modules/network/vyos/: Qalthos samdoran
|
||||
$modules/notification/osx_say.py: $team_ansible
|
||||
$modules/notification/rocketchat.py:
|
||||
ignored: ramondelafuente
|
||||
maintainers: Deepakkothandan
|
||||
$modules/packaging/language/gem.py: $team_ansible
|
||||
$modules/packaging/language/maven_artifact.py:
|
||||
ignored: chrisisbeef
|
||||
maintainers: tumbl3w33d turb
|
||||
$modules/packaging/language/npm.py:
|
||||
ignored: chrishoffman
|
||||
maintainers: shane-walker xcambar
|
||||
$modules/packaging/language/pip.py: lujeni robinro
|
||||
$modules/packaging/os/apk.py:
|
||||
ignored: kbrebanov
|
||||
maintainers: tdtrask
|
||||
$modules/packaging/os/apt.py: $team_ansible
|
||||
$modules/packaging/os/apt_repository.py: $team_ansible
|
||||
$modules/packaging/os/package.py: $team_ansible
|
||||
$modules/packaging/os/pacman.py:
|
||||
ignored: elasticdog
|
||||
$modules/packaging/os/pkgin.py: troy2914
|
||||
$modules/packaging/os/pkgng.py:
|
||||
ignored: bleader
|
||||
maintainers: JoergFiedler
|
||||
$modules/packaging/os/pkgutil.py: scathatheworm
|
||||
$modules/packaging/os/portage.py:
|
||||
ignored: sayap
|
||||
$modules/packaging/os/redhat_subscription.py: alikins kahowell
|
||||
$modules/packaging/os/rhn_channel.py: alikins
|
||||
$modules/packaging/os/rhn_register.py: $team_rhn
|
||||
$modules/packaging/os/yum.py: $team_ansible kustodian
|
||||
$modules/packaging/os/zypper.py:
|
||||
ignored: dirtyharrycallahan
|
||||
$modules/packaging/os/zypper_repository.py: robinro
|
||||
$modules/remote_management/foreman/: ehelms
|
||||
$modules/remote_management/hpilo/: dagwieers haad
|
||||
$modules/remote_management/imc/: dagwieers
|
||||
$modules/remote_management/ipmi/: cloudnull
|
||||
$modules/remote_management/manageiq/: $team_manageiq
|
||||
$modules/remote_management/stacki/stacki_host.py: bbyhuy bsanders
|
||||
$modules/remote_management/ucs/: $team_ucs
|
||||
$modules/source_control/git.py: $team_ansible
|
||||
$modules/source_control/github_key.py:
|
||||
ignored: erydo
|
||||
$modules/storage/infinidat/: GR360RY vmalloc
|
||||
$modules/storage/netapp/: $team_netapp
|
||||
$modules/storage/purestorage/: sdodsley
|
||||
$modules/system/at.py: $team_ansible
|
||||
$modules/system/authorized_key.py: $team_ansible
|
||||
$modules/system/facter.py: $team_ansible
|
||||
$modules/system/filesystem.py: pilou-
|
||||
$modules/system/gconftool2.py: Akasurde
|
||||
$modules/system/group.py: $team_ansible
|
||||
$modules/system/interfaces_file.py: obourdon
|
||||
$modules/system/modprobe.py:
|
||||
ignored: stygstra
|
||||
$modules/system/mount.py: $team_ansible jtyr
|
||||
$modules/system/ohai.py: $team_ansible
|
||||
$modules/system/osx_defaults.py:
|
||||
ignored: frenck
|
||||
maintainers: $team_ansible
|
||||
$modules/system/pam_limits.py:
|
||||
ignored: usawa
|
||||
maintainers: giovannisciortino
|
||||
$modules/system/ping.py: $team_ansible
|
||||
$modules/system/puppet.py: nibalizer
|
||||
$modules/system/seboolean.py: $team_ansible
|
||||
$modules/system/selinux.py: samdoran
|
||||
$modules/system/service.py: $team_ansible
|
||||
$modules/system/setup.py:
|
||||
ignored: david_obrien
|
||||
maintainers: $team_ansible
|
||||
$modules/system/sysctl.py: Akasurde
|
||||
$modules/system/systemd.py: $team_ansible
|
||||
$modules/system/user.py: $team_ansible samdoran
|
||||
$modules/utilities/helper/meta.py: $team_ansible
|
||||
$modules/utilities/logic/assert.py: $team_ansible
|
||||
$modules/utilities/logic/async_status.py: $team_ansible
|
||||
$modules/utilities/logic/async_wrapper.py: $team_ansible
|
||||
$modules/utilities/logic/include.py: $team_ansible
|
||||
$modules/utilities/logic/include_role.py: $team_ansible
|
||||
$modules/utilities/logic/include_vars.py: $team_ansible
|
||||
$modules/utilities/logic/pause.py: samdoran
|
||||
$modules/utilities/logic/wait_for.py: gregswift
|
||||
$modules/web_infrastructure/ansible_tower/: $team_tower
|
||||
$modules/web_infrastructure/django_manage.py: scottanderson42
|
||||
$modules/web_infrastructure/htpasswd.py: $team_ansible
|
||||
$modules/web_infrastructure/jboss/: $team_jboss
|
||||
$modules/web_infrastructure/jira.py: Slezhuk
|
||||
$modules/windows/:
|
||||
maintainers: $team_windows
|
||||
ignored: angstwad georgefrank h0nIg
|
||||
$modules/windows/win_security_policy.py: rndmh3ro defionscode
|
||||
bin/ansible-connection:
|
||||
keywords:
|
||||
- persistent connection
|
||||
labels:
|
||||
- networking
|
||||
maintainers: $team_networking
|
||||
contrib/inventory:
|
||||
keywords:
|
||||
- dynamic inventory script
|
||||
- dynamic inventory
|
||||
- inventory script
|
||||
labels: c:inventory/contrib_script
|
||||
support: community
|
||||
contrib/inventory/digital_ocean.py:
|
||||
keywords:
|
||||
- digital_ocean dynamic inventory script
|
||||
maintainers: BondAnthony
|
||||
labels:
|
||||
- cloud
|
||||
support: community
|
||||
contrib/inventory/linode.py:
|
||||
keywords:
|
||||
- linode dynamic inventory script
|
||||
maintainers: intheclouddan rwaweber zbal
|
||||
labels: cloud
|
||||
contrib/inventory/openstack.py:
|
||||
keywords:
|
||||
- openstack dynamic inventory script
|
||||
maintainers: $team_openstack
|
||||
labels:
|
||||
- cloud
|
||||
contrib/inventory/infoblox.py:
|
||||
keywords:
|
||||
- infoblox dynamic inventory script
|
||||
labels:
|
||||
- ipam
|
||||
- networking
|
||||
maintainers: $team_networking
|
||||
contrib/inventory/azure_rm.py:
|
||||
keywords:
|
||||
- azure inventory
|
||||
- azure rm inventory
|
||||
- azure azure_rm dynamic inventory script
|
||||
labels:
|
||||
- cloud
|
||||
- azure
|
||||
maintainers: $team_azure
|
||||
contrib/inventory/ec2:
|
||||
keywords:
|
||||
- aws dynamic inventory
|
||||
- aws inventory
|
||||
- ec2 inventory
|
||||
- ec2 dynamic inventory
|
||||
- ec2.py dynamic inventory script
|
||||
- ec2.py inventory script
|
||||
- ec2.py inventory
|
||||
labels:
|
||||
- cloud
|
||||
- aws
|
||||
notify: ryansb s-hertel willthames
|
||||
contrib/inventory/vmware.py:
|
||||
keywords:
|
||||
- vmware inventory
|
||||
- vmware dynamic inventory script
|
||||
labels:
|
||||
- cloud
|
||||
maintainers: $team_vmware
|
||||
contrib/inventory/vmware_inventory.py:
|
||||
keywords:
|
||||
- vmware inventory
|
||||
- vmware dynamic inventory script
|
||||
labels:
|
||||
- cloud
|
||||
- vmware
|
||||
maintainers: $team_vmware
|
||||
lib/ansible/inventory:
|
||||
keywords:
|
||||
- core inventory
|
||||
- inventory
|
||||
- inventory parsing
|
||||
$module_utils/net_tools/nios/:
|
||||
labels:
|
||||
- networking
|
||||
- infoblox
|
||||
maintainers: $team_networking sganesh-infoblox
|
||||
$module_utils/network/a10:
|
||||
maintainers: ericchou1 mischapeters
|
||||
labels: networking
|
||||
$module_utils/network/aci:
|
||||
maintainers: $team_aci
|
||||
labels: networking
|
||||
support: community
|
||||
$module_utils/acme.py:
|
||||
maintainers: resmo felixfontein
|
||||
$module_utils/ipa.py:
|
||||
maintainers: $team_ipa
|
||||
$module_utils/network/aireos:
|
||||
maintainers: jmighion
|
||||
labels: networking
|
||||
$module_utils/network/aos:
|
||||
maintainers: dgarros jeremyschulman
|
||||
labels: networking
|
||||
$module_utils/azure_rm_common.py:
|
||||
maintainers: $team_azure
|
||||
labels:
|
||||
- azure
|
||||
- cloud
|
||||
$module_utils/network/aruba:
|
||||
maintainers: jmighion
|
||||
labels: networking
|
||||
$module_utils/network/asa:
|
||||
maintainers: ogenstad gdpak
|
||||
labels: networking
|
||||
$module_utils/network/avi:
|
||||
maintainers: $team_avi
|
||||
labels: networking
|
||||
$module_utils/network/bigswitch:
|
||||
maintainers: jayakody tedelhourani vuile
|
||||
labels: networking
|
||||
$module_utils/network/cloudengine:
|
||||
maintainers: QijunPan
|
||||
labels: networking
|
||||
$module_utils/cloudstack.py:
|
||||
maintainers: $team_cloudstack
|
||||
labels: cloudstack
|
||||
$module_utils/network/cnos:
|
||||
maintainers: dkasberg amuraleedhar
|
||||
labels: networking
|
||||
$module_utils/crypto.py:
|
||||
maintainers: Spredzy
|
||||
$module_utils/network/dellos6:
|
||||
maintainers: skg-net
|
||||
labels: networking
|
||||
$module_utils/network/dellos9:
|
||||
maintainers: skg-net
|
||||
labels: networking
|
||||
$module_utils/network/dellos10:
|
||||
maintainers: skg-net
|
||||
labels: networking
|
||||
$module_utils/network/enos:
|
||||
maintainers: amuraleedhar
|
||||
labels: networking
|
||||
$module_utils/network/exos:
|
||||
maintainers: rdvencioneck
|
||||
labels: networking
|
||||
$module_utils/f5_utils.py:
|
||||
maintainers: caphrim007
|
||||
labels:
|
||||
- f5
|
||||
- networking
|
||||
$module_utils/network/fortios:
|
||||
maintainers: bjolivot
|
||||
labels: networking
|
||||
$module_utils/network/ironware:
|
||||
maintainers: paulquack
|
||||
labels: networking
|
||||
$module_utils/k8s:
|
||||
maintainers: chouseknecht maxamillion fabianvf flaper87 willthames
|
||||
labels: clustering
|
||||
$module_utils/keycloak.py:
|
||||
maintainers: eikef
|
||||
$module_utils/manageiq.py:
|
||||
maintainers: $team_manageiq
|
||||
$module_utils/network/meraki:
|
||||
maintainers: $team_meraki
|
||||
labels: networking
|
||||
support: community
|
||||
$module_utils/network/netconf:
|
||||
maintainers: $team_networking
|
||||
labels: networking
|
||||
$module_utils/network/netscaler:
|
||||
maintainers: $team_netscaler
|
||||
labels: networking
|
||||
$module_utils/network/nos:
|
||||
maintainers: $team_extreme
|
||||
labels: networking
|
||||
$module_utils/network/nso:
|
||||
maintainers: $team_nso
|
||||
labels: networking
|
||||
$module_utils/network/onyx:
|
||||
maintainers: $team_onyx
|
||||
labels: networking
|
||||
$module_utils/network/routeros:
|
||||
maintainers: heuels
|
||||
labels: networking
|
||||
$module_utils/network/slxos:
|
||||
maintainers: $team_extreme
|
||||
labels: networking
|
||||
$module_utils/openstack.py:
|
||||
maintainers: $team_openstack
|
||||
labels:
|
||||
- cloud
|
||||
$module_utils/network/ordnance:
|
||||
maintainers: alexanderturner djh00t
|
||||
labels: networking
|
||||
$module_utils/ovirt.py:
|
||||
maintainers: joshainglis karmab machacekondra
|
||||
labels:
|
||||
- cloud
|
||||
$module_utils/powershell:
|
||||
maintainers: $team_windows_core
|
||||
labels:
|
||||
- windows
|
||||
$module_utils/remote_management/ucs:
|
||||
maintainers: $team_ucs
|
||||
labels: ucs
|
||||
$module_utils/netapp: $team_netapp
|
||||
$module_utils/vultr.py: &vultr
|
||||
maintainers: $team_vultr
|
||||
labels:
|
||||
- cloud
|
||||
$module_utils/vmware:
|
||||
maintainers: $team_vmware
|
||||
support: community
|
||||
$module_utils/network/voss:
|
||||
maintainers: $team_extreme
|
||||
labels: networking
|
||||
$module_utils/network:
|
||||
maintainers: $team_networking
|
||||
labels: networking
|
||||
$module_utils/onepassword.py:
|
||||
maintainers: samdoran
|
||||
$module_utils/memset.py:
|
||||
maintainers: analbeard
|
||||
labels: cloud
|
||||
$module_utils/jboss/:
|
||||
maintainers: $team_jboss
|
||||
$module_utils/scaleway.py: &scaleway
|
||||
maintainers: $team_scaleway
|
||||
labels:
|
||||
- cloud
|
||||
support: community
|
||||
lib/ansible/playbook/handler.py:
|
||||
keywords:
|
||||
- handlers
|
||||
lib/ansible/playbook/role:
|
||||
keywords:
|
||||
- roles path
|
||||
- roles_path
|
||||
- role
|
||||
- role path
|
||||
lib/ansible/playbook/role/include.py:
|
||||
keywords:
|
||||
- include role
|
||||
- include_role
|
||||
- role include
|
||||
lib/ansible/playbook/role/requirement.py:
|
||||
keywords:
|
||||
- role dependencies
|
||||
- role dep
|
||||
- role dependency
|
||||
lib/ansible/plugins/action/asa:
|
||||
maintainers: ogenstad gdpak
|
||||
labels: networking
|
||||
lib/ansible/plugins/action/aireos:
|
||||
maintainers: jmighion
|
||||
labels: networking
|
||||
lib/ansible/plugins/action/aruba:
|
||||
maintainers: jmighion
|
||||
labels: networking
|
||||
lib/ansible/plugins/action/dellos:
|
||||
maintainers: skg-net
|
||||
labels: networking
|
||||
lib/ansible/plugins/action/eos:
|
||||
maintainers: $team_networking
|
||||
labels: networking
|
||||
lib/ansible/plugins/action/ios:
|
||||
maintainers: $team_networking
|
||||
labels: networking
|
||||
lib/ansible/plugins/action/ironware:
|
||||
maintainers: paulquack
|
||||
labels: networking
|
||||
lib/ansible/plugins/action/junos:
|
||||
maintainers: $team_networking
|
||||
labels: networking
|
||||
lib/ansible/plugins/action/net:
|
||||
maintainers: $team_networking
|
||||
labels: networking
|
||||
lib/ansible/plugins/action/nxos:
|
||||
maintainers: $team_networking
|
||||
labels:
|
||||
- networking
|
||||
- nxos
|
||||
lib/ansible/plugins/action/onyx_config.py:
|
||||
maintainers: $team_onyx
|
||||
labels: networking
|
||||
lib/ansible/plugins/action/sros:
|
||||
maintainers: $team_networking
|
||||
labels: networking
|
||||
lib/ansible/plugins/action/vyos:
|
||||
maintainers: $team_networking
|
||||
labels: networking
|
||||
lib/ansible/plugins/callback/unixy.py:
|
||||
support: community
|
||||
maintainers: akatch
|
||||
lib/ansible/plugins/callback/grafana_annotations.py:
|
||||
support: community
|
||||
maintainers: rrey
|
||||
lib/ansible/plugins/callback/sumologic.py:
|
||||
support: community
|
||||
maintainers: ryancurrah
|
||||
lib/ansible/plugins/cliconf/:
|
||||
maintainers: $team_networking
|
||||
labels: networking
|
||||
lib/ansible/plugins/cliconf/exos.py:
|
||||
maintainers: rdvencioneck
|
||||
labels: networking
|
||||
lib/ansible/plugins/cliconf/ironware.py:
|
||||
maintainers: paulquack
|
||||
labels: networking
|
||||
lib/ansible/plugins/cliconf/nos.py:
|
||||
maintainers: $team_extreme
|
||||
labels: networking
|
||||
lib/ansible/plugins/cliconf/nxos.py:
|
||||
maintainers: $team_nxos
|
||||
labels:
|
||||
- networking
|
||||
lib/ansible/plugins/cliconf/onyx.py:
|
||||
maintainers: $team_onyx
|
||||
labels: networking
|
||||
lib/ansible/plugins/cliconf/routeros.py:
|
||||
maintainers: heuels
|
||||
labels: networking
|
||||
lib/ansible/plugins/cliconf/slxos.py:
|
||||
maintainers: $team_extreme
|
||||
labels: networking
|
||||
lib/ansible/plugins/connection/lxd.py:
|
||||
maintainers: mattclay
|
||||
lib/ansible/plugins/connection/netconf.py:
|
||||
maintainers: $team_networking
|
||||
labels: networking
|
||||
lib/ansible/plugins/connection/network_cli.py:
|
||||
maintainers: $team_networking
|
||||
labels: networking
|
||||
lib/ansible/plugins/connection/persistent.py:
|
||||
maintainers: $team_networking
|
||||
labels: networking
|
||||
lib/ansible/plugins/httpapi/ftd.py:
|
||||
maintainers: annikulin $team_networking
|
||||
labels: networking
|
||||
lib/ansible/plugins/inventory/openstack.py:
|
||||
maintainers: $team_openstack
|
||||
keywords:
|
||||
- openstack
|
||||
- inventory
|
||||
labels:
|
||||
- cloud
|
||||
lib/ansible/plugins/cliconf/voss.py:
|
||||
maintainers: $team_extreme
|
||||
labels: networking
|
||||
lib/ansible/plugins/connection/winrm.py:
|
||||
maintainers: $team_windows_core
|
||||
labels:
|
||||
- windows
|
||||
lib/ansible/plugins/inventory/ovirt4.py:
|
||||
maintainers: machacekondra
|
||||
labels:
|
||||
- ovirt
|
||||
- cloud
|
||||
lib/ansible/plugins/inventory/vultr.py: *vultr
|
||||
lib/ansible/plugins/inventory/scaleway.py: *scaleway
|
||||
lib/ansible/plugins/filter/network.py:
|
||||
maintainers: $team_networking
|
||||
labels: networking
|
||||
lib/ansible/plugins/lookup/nios.py:
|
||||
maintainers: $team_networking sganesh-infoblox
|
||||
labels:
|
||||
- networking
|
||||
- infoblox
|
||||
lib/ansible/plugins/lookup/nios_next_ip.py:
|
||||
maintainers: $team_networking
|
||||
labels: networking
|
||||
lib/ansible/plugins/lookup/dig:
|
||||
maintainers: jpmens
|
||||
labels: community
|
||||
lib/ansible/plugins/lookup/conjur_variable.py:
|
||||
maintainers: $team_cyberark_conjur
|
||||
notified: cyberark-bizdev
|
||||
lib/ansible/plugins/lookup/cyberarkpassword.py:
|
||||
notified: cyberark-bizdev
|
||||
lib/ansible/plugins/netconf/:
|
||||
maintainers: $team_networking
|
||||
labels: networking
|
||||
lib/ansible/plugins/lookup/onepassword.py:
|
||||
maintainers: samdoran
|
||||
ignored: azenk
|
||||
lib/ansible/plugins/lookup/onepassword_raw.py:
|
||||
maintainers: samdoran
|
||||
ignored: azenk
|
||||
lib/ansible/plugins/netconf/sros.py:
|
||||
maintainers: wisotzky $team_networking
|
||||
labels: networking
|
||||
lib/ansible/plugins/shell/powershell.py:
|
||||
maintainers: $team_windows_core
|
||||
labels:
|
||||
- windows
|
||||
lib/ansible/plugins/terminal/aireos.py:
|
||||
maintainers: jmighion
|
||||
labels: networking
|
||||
lib/ansible/plugins/terminal/aruba.py:
|
||||
maintainers: jmighion
|
||||
labels: networking
|
||||
lib/ansible/plugins/terminal/asa.py:
|
||||
maintainers: ogenstad gdpak
|
||||
labels: networking
|
||||
lib/ansible/plugins/terminal/dellos10:
|
||||
maintainers: skg-net
|
||||
labels: networking
|
||||
lib/ansible/plugins/terminal/edgeos.py:
|
||||
maintainers: samdoran
|
||||
labels: networking
|
||||
lib/ansible/plugins/terminal/eos.py:
|
||||
maintainers: $team_networking
|
||||
labels: networking
|
||||
lib/ansible/plugins/terminal/exos.py:
|
||||
maintainers: rdvencioneck
|
||||
labels: networking
|
||||
lib/ansible/plugins/terminal/ios.py:
|
||||
maintainers: $team_networking
|
||||
labels: networking
|
||||
lib/ansible/plugins/terminal/iosxr.py:
|
||||
maintainers: $team_networking
|
||||
labels: networking
|
||||
lib/ansible/plugins/terminal/ironware.py:
|
||||
maintainers: paulquack
|
||||
labels: networking
|
||||
lib/ansible/plugins/terminal/junos.py:
|
||||
maintainers: $team_networking
|
||||
labels: networking
|
||||
lib/ansible/plugins/terminal/nos.py:
|
||||
maintainers: $team_extreme
|
||||
labels: networking
|
||||
lib/ansible/plugins/terminal/nxos.py:
|
||||
maintainers: $team_networking
|
||||
labels:
|
||||
- networking
|
||||
lib/ansible/plugins/terminal/onyx.py:
|
||||
maintainers: $team_onyx
|
||||
labels: networking
|
||||
lib/ansible/plugins/terminal/routeros.py:
|
||||
maintainers: heuels
|
||||
labels: networking
|
||||
lib/ansible/plugins/terminal/slxos.py:
|
||||
maintainers: $team_extreme
|
||||
labels: networking
|
||||
lib/ansible/plugins/terminal/sros.py:
|
||||
maintainers: $team_networking
|
||||
labels: networking
|
||||
lib/ansible/plugins/terminal/voss.py:
|
||||
maintainers: $team_extreme
|
||||
labels: networking
|
||||
lib/ansible/plugins/terminal/vyos.py:
|
||||
maintainers: $team_networking samdoran
|
||||
labels: networking
|
||||
lib/ansible/release.py:
|
||||
notify: mattclay nitzmahone
|
||||
lib/ansible/template:
|
||||
keywords:
|
||||
- jinja
|
||||
- jinja2
|
||||
lib/ansible/utils/module_docs_fragments/acme.py:
|
||||
maintainers: resmo felixfontein
|
||||
test/sanity/validate-modules:
|
||||
keywords:
|
||||
- validate-modules
|
||||
docs/:
|
||||
maintainers:
|
||||
- acozine
|
||||
docs/docsite/rst/network/:
|
||||
labels: networking
|
||||
maintainers:
|
||||
- samccann
|
||||
- gundalow
|
||||
docs/docsite/rst/scenario_guides/guide_aci.rst:
|
||||
maintainers: $team_aci
|
||||
labels:
|
||||
- aci
|
||||
- networking
|
||||
packaging/:
|
||||
test/:
|
||||
# 'test' is a component path, then 'test' label will be automatically added
|
||||
test/runner/:
|
||||
notify: mattclay
|
||||
test/sanity/:
|
||||
notify: mattclay
|
||||
test/utils/shippable/:
|
||||
notify: mattclay
|
||||
test/integration/group_vars/:
|
||||
notify: mattclay
|
||||
test/integration/host_vars/:
|
||||
notify: mattclay
|
||||
test/integration/roles/:
|
||||
notify: mattclay
|
||||
test/integration/targets/aci:
|
||||
maintainers: $team_aci
|
||||
labels:
|
||||
- networking
|
||||
test/integration/targets/meraki:
|
||||
maintainers: $team_meraki
|
||||
labels:
|
||||
- networking
|
||||
test/integration/targets/nxos:
|
||||
maintainers: $team_nxos
|
||||
labels:
|
||||
- networking
|
||||
test/integration/targets/setup_acme:
|
||||
maintainers: resmo felixfontein
|
||||
test/integration/targets/setup_zabbix:
|
||||
maintainers: eikef D3DeFi
|
||||
test/integration/targets/ucs:
|
||||
maintainers: $team_ucs
|
||||
labels:
|
||||
- remote_management
|
||||
test/units/modules/network:
|
||||
maintainers: $team_networking
|
||||
labels: networking
|
||||
test/units/modules/network/nxos:
|
||||
maintainers: $team_nxos
|
||||
labels:
|
||||
- networking
|
||||
test/sanity/pep8/legacy-files.txt:
|
||||
hacking/report.py:
|
||||
notify: mattclay
|
||||
shippable.yml:
|
||||
notify: mattclay
|
||||
.yamllint:
|
||||
notify: mattclay
|
||||
tox.ini:
|
||||
notify: mattclay
|
||||
macros:
|
||||
module_utils: lib/ansible/module_utils
|
||||
modules: lib/ansible/modules
|
||||
team_aci: brunocalogero dagwieers jmcgill298 schunduri
|
||||
team_ansible: []
|
||||
team_avi: ericsysmin grastogi23 khaltore
|
||||
team_azure: haroldwongms nitzmahone trstringer yuwzho xscript zikalino
|
||||
team_cloudstack: resmo dpassante
|
||||
team_cumulus: isharacomix jrrivers
|
||||
team_cyberark_conjur: jvanderhoof ryanprior
|
||||
team_dell: skg-net manjuv1 dhivyap abirami-n
|
||||
team_extreme: bigmstone LindsayHill
|
||||
team_ipa: Nosmoht Akasurde fxfitz
|
||||
team_jboss: jairojunior wbrefvem Wolfant
|
||||
team_manageiq: gtanzillo abellotti zgalor yaacov cben
|
||||
team_meraki: dagwieers kbreit
|
||||
team_netapp: hulquest lmprice ndswartz amit0701 schmots1 carchi8py
|
||||
team_netscaler: chiradeep giorgos-nikolopoulos
|
||||
team_netvisor: Qalthos amitsi
|
||||
team_networking: Qalthos ganeshrn rcarrillocruz trishnaguha gdpak justjais
|
||||
team_nso: cmoberg cnasten tbjurman
|
||||
team_nxos: mikewiebe rahushen rcarrillocruz trishnaguha tstoner
|
||||
team_onyx: samerd
|
||||
team_openstack: emonty omgjlk juliakreger rcarrillocruz shrews thingee dagnello
|
||||
team_openswitch: Qalthos gdpak
|
||||
team_rabbitmq: chrishoffman manuel-sousa hyperized
|
||||
team_rhn: alikins barnabycourt flossware vritant
|
||||
team_scaleway: sieben hekonsek Spredzy
|
||||
team_tower: ghjm jlaska matburt wwitzel3 simfarm ryanpetrello rooftopcellist AlanCoding
|
||||
team_ucs: dsoper2 johnamcdonough SDBrett vallard vvb dagwieers
|
||||
team_vmware: Akasurde dav1x warthog9
|
||||
team_vultr: resmo Spredzy
|
||||
team_windows: dagwieers jborean93 jhawkesworth nitzmahone
|
||||
team_windows_core: nitzmahone jborean93
|
||||
3
.github/CODE_OF_CONDUCT.md
vendored
3
.github/CODE_OF_CONDUCT.md
vendored
@ -1,3 +0,0 @@
|
||||
# Community Code of Conduct
|
||||
|
||||
Please see the official [Ansible Community Code of Conduct](https://docs.ansible.com/ansible/latest/community/code_of_conduct.html).
|
||||
25
.github/CONTRIBUTING.md
vendored
25
.github/CONTRIBUTING.md
vendored
@ -1,25 +0,0 @@
|
||||
# WELCOME TO ANSIBLE GITHUB
|
||||
|
||||
Hi! Nice to see you here!
|
||||
|
||||
## QUESTIONS ?
|
||||
|
||||
Please see the [Community Guide](https://docs.ansible.com/ansible/latest/community/index.html) for information on how to ask questions on the [mailing lists](https://docs.ansible.com/ansible/latest/community/communication.html#mailing-list-information) and IRC.
|
||||
|
||||
The GitHub issue tracker is not the best place for questions for various reasons, but both IRC and the mailing list are very helpful places for those things, as the community page explains best.
|
||||
|
||||
## CONTRIBUTING ?
|
||||
|
||||
By contributing you agree that these contributions are your own (or approved by your employer) and you grant a full, complete, irrevocable copyright license to all users and developers of the project, present and future, pursuant to the license of the project. You can also read the same [CLA](https://docs.ansible.com/ansible/latest/community/contributor_license_agreement.html) on the Ansible docsite.
|
||||
|
||||
Please review the [Community Guide](https://docs.ansible.com/ansible/latest/community/index.html) for more information on contributing to Ansible.
|
||||
|
||||
## BUG TO REPORT ?
|
||||
|
||||
First and foremost, also check the [Community Guide](https://docs.ansible.com/ansible/latest/community/index.html).
|
||||
|
||||
You can report bugs or make enhancement requests at the [Ansible GitHub issue page](http://github.com/ansible/ansible/issues/new/choose) by filling out the issue template that will be presented.
|
||||
|
||||
Also please make sure you are testing on the latest released version of Ansible or the development branch; see the [Installation Guide](https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html) for details.
|
||||
|
||||
Thanks!
|
||||
58
.github/ISSUE_TEMPLATE.md
vendored
58
.github/ISSUE_TEMPLATE.md
vendored
@ -1,58 +0,0 @@
|
||||
<!---
|
||||
Verify first that your issue/request is not already reported on GitHub.
|
||||
THIS FORM WILL BE READ BY A MACHINE, COMPLETE ALL SECTIONS AS DESCRIBED.
|
||||
Also test if the latest release, and devel branch are affected too.
|
||||
ALWAYS add information AFTER (OUTSIDE) these html comments.
|
||||
Otherwise it may end up being automatically closed by our bot. -->
|
||||
|
||||
##### SUMMARY
|
||||
<!--- Explain the problem briefly -->
|
||||
|
||||
##### ISSUE TYPE
|
||||
<!--- Pick one below and delete the rest -->
|
||||
- Bug Report
|
||||
- Feature Idea
|
||||
- Documentation Report
|
||||
|
||||
##### COMPONENT NAME
|
||||
<!--- Insert, BELOW THIS COMMENT, the name of the module, plugin, task or feature.
|
||||
Do not include extra details here, e.g. "vyos_command" not "the network module vyos_command" or the full path-->
|
||||
|
||||
##### ANSIBLE VERSION
|
||||
<!--- Paste, BELOW THIS COMMENT, verbatim output from "ansible --version" between quotes below -->
|
||||
```
|
||||
|
||||
```
|
||||
|
||||
##### CONFIGURATION
|
||||
<!--- If using Ansible 2.4 or above, paste, BELOW THIS COMMENT, the results of "ansible-config dump --only-changed"
|
||||
Otherwise, mention any settings you have changed/added/removed in ansible.cfg
|
||||
(or using the ANSIBLE_* environment variables).-->
|
||||
|
||||
##### OS / ENVIRONMENT
|
||||
<!--- Mention, BELOW THIS COMMENT, the OS you are running Ansible from, and the OS you are
|
||||
managing, or say "N/A" for anything that is not platform-specific.
|
||||
Also mention the specific version of what you are trying to control,
|
||||
e.g. if this is a network bug the version of firmware on the network device.-->
|
||||
|
||||
##### STEPS TO REPRODUCE
|
||||
<!--- For bugs, show exactly how to reproduce the problem, using a minimal test-case.
|
||||
For new features, show how the feature would be used. -->
|
||||
|
||||
<!--- Paste example playbooks or commands between quotes below -->
|
||||
```yaml
|
||||
|
||||
```
|
||||
|
||||
<!--- You can also paste gist.github.com links for larger files -->
|
||||
|
||||
##### EXPECTED RESULTS
|
||||
<!--- What did you expect to happen when running the steps above? -->
|
||||
|
||||
##### ACTUAL RESULTS
|
||||
<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->
|
||||
|
||||
<!--- Paste verbatim command output between quotes below -->
|
||||
```
|
||||
|
||||
```
|
||||
61
.github/ISSUE_TEMPLATE/bug_report.md
vendored
61
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@ -1,61 +0,0 @@
|
||||
---
|
||||
name: 🐛 Bug report
|
||||
about: Create a report to help us improve
|
||||
|
||||
---
|
||||
|
||||
<!---
|
||||
Verify first that your issue/request is not already reported on GitHub.
|
||||
THIS FORM WILL BE READ BY A MACHINE, COMPLETE ALL SECTIONS AS DESCRIBED.
|
||||
Also test if the latest release, and devel branch are affected too.
|
||||
ALWAYS add information AFTER (OUTSIDE) these html comments.
|
||||
Otherwise it may end up being automatically closed by our bot. -->
|
||||
|
||||
##### SUMMARY
|
||||
<!--- Explain the problem briefly -->
|
||||
|
||||
##### ISSUE TYPE
|
||||
- Bug Report
|
||||
|
||||
##### COMPONENT NAME
|
||||
<!--- Insert, BELOW THIS COMMENT, the name of the module, plugin, task or feature.
|
||||
Do not include extra details here, e.g. "vyos_command" not "the network module vyos_command" or the full path-->
|
||||
|
||||
##### ANSIBLE VERSION
|
||||
<!--- Paste, BELOW THIS COMMENT, verbatim output from "ansible --version" between quotes below -->
|
||||
```
|
||||
|
||||
```
|
||||
|
||||
##### CONFIGURATION
|
||||
<!--- If using Ansible 2.4 or above, paste, BELOW THIS COMMENT, the results of "ansible-config dump --only-changed"
|
||||
Otherwise, mention any settings you have changed/added/removed in ansible.cfg
|
||||
(or using the ANSIBLE_* environment variables).-->
|
||||
|
||||
##### OS / ENVIRONMENT
|
||||
<!--- Mention, BELOW THIS COMMENT, the OS you are running Ansible from, and the OS you are
|
||||
managing, or say "N/A" for anything that is not platform-specific.
|
||||
Also mention the specific version of what you are trying to control,
|
||||
e.g. if this is a network bug the version of firmware on the network device.-->
|
||||
|
||||
##### STEPS TO REPRODUCE
|
||||
<!--- For bugs, show exactly how to reproduce the problem, using a minimal test-case.
|
||||
For new features, show how the feature would be used. -->
|
||||
|
||||
<!--- Paste example playbooks or commands between quotes below -->
|
||||
```yaml
|
||||
|
||||
```
|
||||
|
||||
<!--- You can also paste gist.github.com links for larger files -->
|
||||
|
||||
##### EXPECTED RESULTS
|
||||
<!--- What did you expect to happen when running the steps above? -->
|
||||
|
||||
##### ACTUAL RESULTS
|
||||
<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->
|
||||
|
||||
<!--- Paste verbatim command output between quotes below -->
|
||||
```
|
||||
|
||||
```
|
||||
61
.github/ISSUE_TEMPLATE/documentation_report.md
vendored
61
.github/ISSUE_TEMPLATE/documentation_report.md
vendored
@ -1,61 +0,0 @@
|
||||
---
|
||||
name: 📝 Documentation Report
|
||||
about: Ask us about docs
|
||||
|
||||
---
|
||||
|
||||
<!---
|
||||
Verify first that your issue/request is not already reported on GitHub.
|
||||
THIS FORM WILL BE READ BY A MACHINE, COMPLETE ALL SECTIONS AS DESCRIBED.
|
||||
Also test if the latest release, and devel branch are affected too.
|
||||
ALWAYS add information AFTER (OUTSIDE) these html comments.
|
||||
Otherwise it may end up being automatically closed by our bot. -->
|
||||
|
||||
##### SUMMARY
|
||||
<!--- Explain the problem briefly -->
|
||||
|
||||
##### ISSUE TYPE
|
||||
- Documentation Report
|
||||
|
||||
##### COMPONENT NAME
|
||||
<!--- Insert, BELOW THIS COMMENT, the name of the module, plugin, task or feature.
|
||||
Do not include extra details here, e.g. "vyos_command" not "the network module vyos_command" or the full path-->
|
||||
|
||||
##### ANSIBLE VERSION
|
||||
<!--- Paste, BELOW THIS COMMENT, verbatim output from "ansible --version" between quotes below -->
|
||||
```
|
||||
|
||||
```
|
||||
|
||||
##### CONFIGURATION
|
||||
<!--- If using Ansible 2.4 or above, paste, BELOW THIS COMMENT, the results of "ansible-config dump --only-changed"
|
||||
Otherwise, mention any settings you have changed/added/removed in ansible.cfg
|
||||
(or using the ANSIBLE_* environment variables).-->
|
||||
|
||||
##### OS / ENVIRONMENT
|
||||
<!--- Mention, BELOW THIS COMMENT, the OS you are running Ansible from, and the OS you are
|
||||
managing, or say "N/A" for anything that is not platform-specific.
|
||||
Also mention the specific version of what you are trying to control,
|
||||
e.g. if this is a network bug the version of firmware on the network device.-->
|
||||
|
||||
##### STEPS TO REPRODUCE
|
||||
<!--- For bugs, show exactly how to reproduce the problem, using a minimal test-case.
|
||||
For new features, show how the feature would be used. -->
|
||||
|
||||
<!--- Paste example playbooks or commands between quotes below -->
|
||||
```yaml
|
||||
|
||||
```
|
||||
|
||||
<!--- You can also paste gist.github.com links for larger files -->
|
||||
|
||||
##### EXPECTED RESULTS
|
||||
<!--- What did you expect to happen when running the steps above? -->
|
||||
|
||||
##### ACTUAL RESULTS
|
||||
<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->
|
||||
|
||||
<!--- Paste verbatim command output between quotes below -->
|
||||
```
|
||||
|
||||
```
|
||||
61
.github/ISSUE_TEMPLATE/feature_request.md
vendored
61
.github/ISSUE_TEMPLATE/feature_request.md
vendored
@ -1,61 +0,0 @@
|
||||
---
|
||||
name: ✨ Feature request
|
||||
about: Suggest an idea for this project
|
||||
|
||||
---
|
||||
|
||||
<!---
|
||||
Verify first that your issue/request is not already reported on GitHub.
|
||||
THIS FORM WILL BE READ BY A MACHINE, COMPLETE ALL SECTIONS AS DESCRIBED.
|
||||
Also test if the latest release, and devel branch are affected too.
|
||||
ALWAYS add information AFTER (OUTSIDE) these html comments.
|
||||
Otherwise it may end up being automatically closed by our bot. -->
|
||||
|
||||
##### SUMMARY
|
||||
<!--- Explain the problem briefly -->
|
||||
|
||||
##### ISSUE TYPE
|
||||
- Feature Idea
|
||||
|
||||
##### COMPONENT NAME
|
||||
<!--- Insert, BELOW THIS COMMENT, the name of the module, plugin, task or feature.
|
||||
Do not include extra details here, e.g. "vyos_command" not "the network module vyos_command" or the full path-->
|
||||
|
||||
##### ANSIBLE VERSION
|
||||
<!--- Paste, BELOW THIS COMMENT, verbatim output from "ansible --version" between quotes below -->
|
||||
```
|
||||
|
||||
```
|
||||
|
||||
##### CONFIGURATION
|
||||
<!--- If using Ansible 2.4 or above, paste, BELOW THIS COMMENT, the results of "ansible-config dump --only-changed"
|
||||
Otherwise, mention any settings you have changed/added/removed in ansible.cfg
|
||||
(or using the ANSIBLE_* environment variables).-->
|
||||
|
||||
##### OS / ENVIRONMENT
|
||||
<!--- Mention, BELOW THIS COMMENT, the OS you are running Ansible from, and the OS you are
|
||||
managing, or say "N/A" for anything that is not platform-specific.
|
||||
Also mention the specific version of what you are trying to control,
|
||||
e.g. if this is a network bug the version of firmware on the network device.-->
|
||||
|
||||
##### STEPS TO REPRODUCE
|
||||
<!--- For bugs, show exactly how to reproduce the problem, using a minimal test-case.
|
||||
For new features, show how the feature would be used. -->
|
||||
|
||||
<!--- Paste example playbooks or commands between quotes below -->
|
||||
```yaml
|
||||
|
||||
```
|
||||
|
||||
<!--- You can also paste gist.github.com links for larger files -->
|
||||
|
||||
##### EXPECTED RESULTS
|
||||
<!--- What did you expect to happen when running the steps above? -->
|
||||
|
||||
##### ACTUAL RESULTS
|
||||
<!--- What actually happened? If possible run with extra verbosity (-vvvv) -->
|
||||
|
||||
<!--- Paste verbatim command output between quotes below -->
|
||||
```
|
||||
|
||||
```
|
||||
@ -1,8 +0,0 @@
|
||||
---
|
||||
name: 🔥 Security bug report
|
||||
about: How to report security vulnerabilities
|
||||
---
|
||||
|
||||
For all security related bugs, email security@ansible.com instead of using this issue tracker and you will receive a prompt response.
|
||||
|
||||
For more information, see https://docs.ansible.com/ansible/latest/community/reporting_bugs_and_features.html
|
||||
33
.github/PULL_REQUEST_TEMPLATE.md
vendored
33
.github/PULL_REQUEST_TEMPLATE.md
vendored
@ -1,33 +0,0 @@
|
||||
##### SUMMARY
|
||||
<!--- Describe the change, including rationale and design decisions -->
|
||||
|
||||
<!--- If you are fixing an existing issue, please include "Fixes #nnn" in your
|
||||
commit message and your description; but you should still explain what
|
||||
the change does.-->
|
||||
|
||||
##### ISSUE TYPE
|
||||
<!--- Pick one below and delete the rest: -->
|
||||
- Feature Pull Request
|
||||
- New Module Pull Request
|
||||
- Bugfix Pull Request
|
||||
- Docs Pull Request
|
||||
|
||||
##### COMPONENT NAME
|
||||
<!--- Name of the module, plugin, task or feature -->
|
||||
|
||||
##### ANSIBLE VERSION
|
||||
<!--- Paste verbatim output from "ansible --version" between quotes below -->
|
||||
```
|
||||
|
||||
```
|
||||
|
||||
|
||||
##### ADDITIONAL INFORMATION
|
||||
<!--- Include additional information to help people understand the change here.
|
||||
For bugs that don't have a linked bug report, a step-by-step reproduction
|
||||
of the problem is helpful. -->
|
||||
|
||||
<!--- Paste verbatim command output below, e.g. before and after your change -->
|
||||
```
|
||||
|
||||
```
|
||||
89
.gitignore
vendored
89
.gitignore
vendored
@ -1,11 +1,9 @@
|
||||
# build products...
|
||||
*.py[co]
|
||||
build
|
||||
AUTHORS.TXT
|
||||
# Emacs backup and autosave files...
|
||||
# Emacs backup files...
|
||||
*~
|
||||
.\#*
|
||||
\#*
|
||||
# RPM stuff...
|
||||
MANIFEST
|
||||
dist
|
||||
@ -15,91 +13,18 @@ rpm-build
|
||||
.pydevproject
|
||||
# PyCharm stuff...
|
||||
.idea
|
||||
#IntelliJ IDEA stuff..
|
||||
*.iml
|
||||
#VSCode stuff..
|
||||
.vscode/
|
||||
# Mac OS X stuff...
|
||||
.DS_Store
|
||||
# manpage build stuff...
|
||||
docs/man/man1/ansible*.1
|
||||
docs/man/man1/ansible*.1.asciidoc.in
|
||||
docs/man/man3/*
|
||||
# Sublime stuff
|
||||
*.sublime-project
|
||||
*.sublime-workspace
|
||||
# docsite stuff...
|
||||
docs/docsite/_build
|
||||
docs/docsite/*.html
|
||||
docs/docsite/htmlout
|
||||
docs/docsite/rst/cli/ansible-*.rst
|
||||
docs/docsite/rst/cli/ansible.rst
|
||||
docs/docsite/rst/modules/*.rst
|
||||
docs/docsite/rst/playbooks_directives.rst
|
||||
docs/docsite/rst/plugins_by_category.rst
|
||||
docs/docsite/rst/plugins/*/*.rst
|
||||
docs/docsite/rst/reference_appendices/config.rst
|
||||
docs/docsite/rst/reference_appendices/playbooks_keywords.rst
|
||||
docs/docsite/rst_warnings
|
||||
docs/docsite/searchindex.js
|
||||
docs/docsite/_static/*.gif
|
||||
docs/docsite/_static/*.png
|
||||
docs/docsite/_static/websupport.js
|
||||
docsite/rst/modules
|
||||
docsite/*.html
|
||||
docsite/_static/*.gif
|
||||
docsite/_static/*.png
|
||||
docsite/_static/websupport.js
|
||||
# deb building stuff...
|
||||
/debian/
|
||||
deb-build
|
||||
# Vim swap files
|
||||
*.swp
|
||||
*.swo
|
||||
credentials.yml
|
||||
# test output
|
||||
*.retry
|
||||
*.out
|
||||
.pytest_cache/
|
||||
.tox
|
||||
.cache
|
||||
.pytest_cache
|
||||
results.xml
|
||||
coverage.xml
|
||||
/test/units/cover-html
|
||||
/test/integration/targets/*/backup/
|
||||
/test/cache/*
|
||||
# Development
|
||||
/test/develop
|
||||
venv
|
||||
Vagrantfile
|
||||
.vagrant
|
||||
ansible.egg-info/
|
||||
/shippable/
|
||||
/test/integration/cloud-config-*.*
|
||||
!/test/integration/cloud-config-*.*.template
|
||||
.python-version
|
||||
# Release directory
|
||||
packaging/release/ansible_release
|
||||
/.cache/
|
||||
/test/results/coverage/*=coverage.*
|
||||
/test/results/coverage/coverage*
|
||||
/test/results/reports/coverage*.xml
|
||||
/test/results/reports/coverage*/
|
||||
/test/results/bot/*.json
|
||||
/test/results/junit/*.xml
|
||||
/test/results/logs/*.log
|
||||
/test/results/data/*.json
|
||||
/test/integration/inventory.remote
|
||||
/test/integration/inventory.networking
|
||||
/test/integration/inventory.winrm
|
||||
/test/integration/cloud-config-aws.yml
|
||||
/test/integration/cloud-config-cs.ini
|
||||
# python 'rope' stuff
|
||||
.ropeproject
|
||||
# local 'ack' config files
|
||||
.ackrc
|
||||
# default 'coverage html' results
|
||||
htmlcov/
|
||||
# default 'coverage' tool data
|
||||
.coverage
|
||||
# ansible-test coverage results
|
||||
test/units/.coverage.*
|
||||
/test/integration/cloud-config-azure.yml
|
||||
/SYMLINK_CACHE.json
|
||||
changelogs/.plugin-cache.yaml
|
||||
debian/
|
||||
|
||||
36
.mailmap
36
.mailmap
@ -1,36 +0,0 @@
|
||||
Michael DeHaan <michael.dehaan@gmail.com> <michael@ansibleworks.com>
|
||||
Michael DeHaan <michael.dehaan@gmail.com> Michael DeHaan <michael@ansibleworks.com>
|
||||
Michael DeHaan <michael.dehaan@gmail.com> <michael@ansible.com>
|
||||
<bcoca@ansible.com> <brian.coca+git@gmail.com>
|
||||
<bcoca@ansible.com> <briancoca+ansible@gmail.com>
|
||||
<bcoca@ansible.com> <briancoca+dev@gmail.com>
|
||||
<bcoca@ansible.com> <bcoca@tablethotels.com>
|
||||
<a.badger@gmail.com> <toshio@fedoraproject.org>
|
||||
James Tanner <tanner.jc@gmail.com>
|
||||
<jimi@sngx.net> <jcammarata@ansibleworks.com>
|
||||
Michael Scherer <misc@zarb.org> mscherer <misc@zarb.org>
|
||||
<misc@zarb.org> <misc@ephaone.org>
|
||||
<misc@zarb.org> <mscherer@users.noreply.github.com>
|
||||
James Martin <jmartin@ansible.com> <jmartin@basho.com>
|
||||
James Laska <jlaska@ansible.com> <jlaska@redhat.com>
|
||||
James Laska <jlaska@ansible.com> <jlaska@ansibleworks.com>
|
||||
James Laska <jlaska@ansible.com> <jlaska@James-Laskas-MacBook-Pro.local>
|
||||
James Laska <jlaska@ansible.com> <jlaska@users.noreply.github.com>
|
||||
Jason McKerr <mckerrj@gmail.com> <jmckerr@jmckerr-OSX.local>
|
||||
Chris Houseknecht <chouseknecht@ansible.com>
|
||||
Chris Houseknecht <chouseknecht@ansible.com> chouseknecht <chouse@ansible.com>
|
||||
Chris Houseknecht <chouseknecht@ansible.com> Chris Houseknecht <chouse@ansibleworks.com>
|
||||
Stephen Fromm <sfromm@gmail.com> Stephen Fromm <stephenf@nero.net>
|
||||
Sandra Wills <docschick@ansible.com> Sandra Wills <swills@ansible.com>
|
||||
Will Thames <will@thames.id.au> willthames <will@thames.id.au>
|
||||
Will Thames <will@thames.id.au> Will Thames <willdthames@gmail.com>
|
||||
Will Thames <will@thames.id.au> willthames <willdthames@gmail.com>
|
||||
Will Thames <will@thames.id.au> willthames <will@musc.org.uk>
|
||||
Will Thames <will@thames.id.au> u348095 <will.thames@suncorp.com.au>
|
||||
Will Thames <will@thames.id.au> willthames <will.thames@suncorp.com.au>
|
||||
Will Thames <will@thames.id.au> Will Thames <will.thames@xvt.com.au>
|
||||
nitzmahone <mdavis@ansible.com> Matt Davis <nitzmahone@users.noreply.github.com>
|
||||
Dag Wieers <dag@wieers.com> Dag Wieërs <dag@wieers.com>
|
||||
Dag Wieers <dag@wieers.com> Dag Wieers <dag.wieers@gmail.com>
|
||||
Rene Moser <mail@renemoser.net> René Moser <mail@renemoser.net>
|
||||
Rene Moser <mail@renemoser.net> Rene Moser <rene.moser@swisstxt.ch>
|
||||
341
CHANGELOG.md
Normal file
341
CHANGELOG.md
Normal file
@ -0,0 +1,341 @@
|
||||
Ansible Changes By Release
|
||||
==========================
|
||||
|
||||
0.8 "Cathedral" -- Oct 19, 2012
|
||||
|
||||
Highlighted Core Changes:
|
||||
|
||||
* fireball mode -- ansible can bootstrap a ephemeral 0mq (zeromq) daemon that runs as a given user and expires after X period of time. It is very fast.
|
||||
* playbooks with errors now return 2 on failure. 1 indicates a more fatal syntax error. Similar for /usr/bin/ansible
|
||||
* server side action code (template, etc) are now fully pluggable
|
||||
* ability to write lookup plugins, like the code powering "with_fileglob" (see below)
|
||||
|
||||
Other Core Changes:
|
||||
|
||||
* ansible config file can also go in '.ansible.cfg' in cwd in addition to ~/.ansible.cfg and /etc/ansible/ansible.cfg
|
||||
* fix for inventory hosts at API level when hosts spec is a list and not a colon delimited string
|
||||
* ansible-pull example now sets up logrotate for the ansible-pull cron job log
|
||||
* negative host matching (!hosts) fixed for external inventory script usage
|
||||
* internals: os.executable check replaced with utils function so it plays nice on AIX
|
||||
* Debian packaging now includes ansible-pull manpage
|
||||
* magic variable 'ansible_ssh_host' can override the hostname (great for usage with tunnels)
|
||||
* date command usage in build scripts fixed for OS X
|
||||
* don't use SSH agent with paramiko if a password is specified
|
||||
* make output be cleaner on multi-line command/shell errors
|
||||
* /usr/bin/ansible now prints things when tasks are skipped, like when creates= is used with -m command and /usr/bin/ansible
|
||||
* when trying to async a module that is not a 'normal' asyncable module, ansible will now let you know
|
||||
* ability to access inventory variables via 'hostvars' for hosts not yet included in any play, using on demand lookups
|
||||
* merged ansible-plugins, ansible-resources, and ansible-docs into the main project
|
||||
* you can set ANSIBLE_NOCOWS=1 if you want to disable cowsay if it is installed. Though no one should ever want to do this! Cows are great!
|
||||
* you can set ANSIBLE_FORCECOLOR=1 to force color mode even when running without a TTY
|
||||
* fatal errors are now properly colored red.
|
||||
* skipped messages are now cyan, to differentiate them from unchanged messages.
|
||||
* extensive documentation upgrades
|
||||
* delegate_action to localhost (aka local_action) will always use the local connection type
|
||||
|
||||
Highlighted playbook changes:
|
||||
|
||||
* is_set is available for use inside of an only_if expression: is_set('ansible_eth0'). We intend to further upgrade this with a 'when'
|
||||
keyword providing better options to 'only_if' in the next release. Also is_unset('ansible_eth0')
|
||||
* playbooks can import playbooks in other directories and then be able to import tasks relative to them
|
||||
* FILE($path) now allows access of contents of file in a path, very good for use with SSH keys
|
||||
* similarly PIPE($command) will run a local command and return the results of executing this command
|
||||
* if all hosts in a play fail, stop the playbook, rather than letting the console log spool on by
|
||||
* only_if using register variables that are booleans now works in a boolean way like you'd expect
|
||||
* task includes now work with with_items (such as: include: path/to/wordpress.yml user=$item)
|
||||
* when using a $list variable with $var or ${var} syntax it will automatically join with commas
|
||||
* setup is not run more than once when we know it is has already been run in a play that included another play, etc
|
||||
* can set/override sudo and sudo_user on individual tasks in a play, defaults to what is set in the play if not present
|
||||
* ability to use with_fileglob to iterate over local file patterns
|
||||
* templates now use Jinja2's 'trim_blocks=True' to avoid stray newlines, small changes to templates may
|
||||
be required in rare cases.
|
||||
|
||||
Other playbook changes:
|
||||
|
||||
* to_yaml and from_yaml are available as Jinja2 filters
|
||||
* $group and $group_names are now accessible in with_items
|
||||
* where 'stdout' is provided a new 'stdout_lines' variable (type == list) is now generated and usable with with_items
|
||||
* when local_action is used the transport is automatically overridden to the local type
|
||||
* output on failed playbook commands is now nicely split for stderr/stdout and syntax errors
|
||||
* if local_action is not used and delegate_to was 127.0.0.1 or localhost, use local connection regardless
|
||||
* when running a playbook, and the statement has changed, prints 'changed:' now versus 'ok:' so it is obvious without colored mode
|
||||
* variables now usable within vars_prompt (just not host/group vars)
|
||||
* setup facts are now retained across plays (dictionary just gets updated as needed)
|
||||
* --sudo-user now works with --extra-vars
|
||||
* fix for multi_line strings with only_if
|
||||
|
||||
New Modules:
|
||||
|
||||
* ini_file module for manipulating INI files
|
||||
* new LSB facts (release, distro, etc)
|
||||
* pause module -- (pause seconds=10) (pause minutes=1) (pause prompt=foo) -- it's an action plugin
|
||||
* a module for adding entries to the main crontab (though you may still wish to just drop template files into cron.d)
|
||||
* debug module can be used for outputing messages without using 'shell echo'
|
||||
* a fail module is now available for causing errors, you might want to use it with only_if to fail in certain conditions
|
||||
|
||||
Other module Changes, Upgrades, and Fixes:
|
||||
|
||||
* removes= exists on command just like creates=
|
||||
* postgresql modules now take an optional port= parameter
|
||||
* /proc/cmdline info is now available in Linux facts
|
||||
* public host key detection for OS X
|
||||
* lineinfile module now uses 'search' not exact 'match' in regexes, making it much more intuitive and not needing regex syntax most of the time
|
||||
* added force=yes|no (default no) option for file module, which allows transition between files to directories and so on
|
||||
* additional facts for SunOS virtualization
|
||||
* copy module is now atomic when used across volumes
|
||||
* url_get module now returns 'dest' with the location of the file saved
|
||||
* fix for yum module when using local RPMs vs downloading
|
||||
* cleaner error messages with copy if destination directory does not exist
|
||||
* setup module now still works if PATH is not set
|
||||
* service module status now correct for services with 'subsys locked' status
|
||||
* misc fixes/upgrades to the wait_for module
|
||||
* git module now expands any "~" in provided destination paths
|
||||
* ignore stop error code failure for service module with state=restarted, always try to start
|
||||
* inline documentation for modules allows documentation source to built without pull requests to the ansible-docs project, among other things
|
||||
* variable '$ansible_managed' is now great to include at the top of your templates and includes useful information and a warning that it will be replaced
|
||||
* "~" now expanded in command module when using creates/removes
|
||||
* mysql module can do dumps and imports
|
||||
* selinux policy is only required if setting to not disabled
|
||||
* various fixes for yum module when working with packages not in any present repo
|
||||
|
||||
0.7 "Panama" -- Sept 6 2012
|
||||
|
||||
Module changes:
|
||||
|
||||
* login_unix_socket option for mysql user and database modules (see PR #781 for doc notes)
|
||||
* new modules -- pip, easy_install, apt_repository, supervisorctl
|
||||
* error handling for setup module when SELinux is in a weird state
|
||||
* misc yum module fixes
|
||||
* better changed=True/False detection in user module on older Linux distros
|
||||
* nicer errors from modules when arguments are not key=value
|
||||
* backup option on copy (backup=yes), as well as template, assemble, and lineinfile
|
||||
* file module will not recurse on directory properties
|
||||
* yum module now workable without having repoquery installed, but doesn't support comparisons or list= if so
|
||||
* setup module now detects interfaces with aliases
|
||||
* better handling of VM guest type detection in setup module
|
||||
* new module boilerplate code to check for mutually required arguments, arguments required together, exclusive args
|
||||
* add pattern= as a paramter to the service module (for init scripts that don't do status, or do poor status)
|
||||
* various fixes to mysql & postresql modules
|
||||
* added a thirsty= option (boolean, default no) to the get_url module to decide to download the file every time or not
|
||||
* added a wait_for module to poll for ports being open
|
||||
* added a nagios module for controlling outage windows and alert statuses
|
||||
* added a seboolean module for getsebool/setsebool type operations
|
||||
* added a selinux module for controlling overall SELinux policy
|
||||
* added a subversion module
|
||||
* added lineinfile for adding and removing lines from basic files
|
||||
* added facts for ARM-based CPUs
|
||||
* support for systemd in the service module
|
||||
* git moduleforce reset behavior is now controllable
|
||||
* file module can now operate on special files (block devices, etc)
|
||||
|
||||
Core changes:
|
||||
|
||||
* ansible --version will now give branch/SHA information if running from git
|
||||
* better sudo permissions when encountering different umasks
|
||||
* when using paramiko and SFTP is not accessible, do not traceback, but return a nice human readable msg
|
||||
* use -vvv for extreme debug levels. -v gives more playbook output as before
|
||||
* -vv shows module arguments to all module calls (and maybe some other things later)
|
||||
* don not pass "--" to sudo to work on older EL5
|
||||
* make remote_md5 internal function work with non-bash shells
|
||||
* allow user to be passed in via --extra-vars (regression)
|
||||
* add --limit option, which can be used to further confine the pattern given in ansible-playbooks
|
||||
* adds ranged patterns like dbservers[0-49] for usage with patterns or --limit
|
||||
* -u and user: defaults to current user, rather than root, override as before
|
||||
* /etc/ansible/ansible.cfg and ~/ansible.cfg now available to set default values and other things
|
||||
* (developers) ANSIBLE_KEEP_REMOTE_FILES=1 can be used in debugging (envrionment variable)
|
||||
* (developers) connection types are now plugins
|
||||
* (developers) callbacks can now be extended via plugins
|
||||
* added FreeBSD ports packaging scripts
|
||||
* check for terminal properties prior to engaging color modes
|
||||
* explicitly disable password auth with -c ssh, as it is not used anyway
|
||||
|
||||
Playbooks:
|
||||
|
||||
* YAML syntax errors detected and show where the problem is
|
||||
* if you ctrl+c a playbook it will not traceback (usually)
|
||||
* vars_prompt now has encryption options (see examples/playbooks/prompts.yml)
|
||||
* allow variables in parameterized task include parameters (regression)
|
||||
* add ability to store the result of any command in a register (see examples/playbooks/register_logic.yml)
|
||||
* --list-hosts to show what hosts are included in each play of a playbook
|
||||
* fix a variable ordering issue that could affect vars_files with selective file source lists
|
||||
* adds 'delegate_to' for a task, which can be used to signal outage windows and load balancers on behalf of hosts
|
||||
* adds 'serial' to playbook, allowing you to specify how many hosts can be processing a playbook at one time (default 0=all)
|
||||
* adds 'local_action: <action parameters>' as an alias to 'delegate_to: 127.0.0.1'
|
||||
|
||||
0.6 "Cabo" -- August 6, 2012
|
||||
|
||||
playbooks:
|
||||
|
||||
* support to tag tasks and includes and use --tags in playbook CLI
|
||||
* playbooks can now include other playbooks (example/playbooks/nested_playbooks.yml)
|
||||
* vars_files now usable with with_items, provided file paths don't contain host specific facts
|
||||
* error reporting if with_items value is unbound
|
||||
* with_items no longer creates lots of tasks, creates one task that makes multiple calls
|
||||
* can use host_specific facts inside with_items (see above)
|
||||
* at the top level of a playbook, set 'gather_facts: False' to skip fact gathering
|
||||
* first_available_file and with_items used together will now raise an error
|
||||
* to catch typos, like 'var' for 'vars', playbooks and tasks now yell on invalid parameters
|
||||
* automatically load (directory_of_inventory_file)/group_vars/groupname and /host_vars/hostname in vars_files
|
||||
* playbook is now colorized, set ANSIBLE_NOCOLOR=1 if you do not like this, does not colorize if not a TTY
|
||||
* hostvars now preserved between plays (regression in 0.5 from 0.4), useful for sharing vars in multinode configs
|
||||
* ignore_errors: True on a task can be used to allow a task to fail and not stop the play
|
||||
* with_items with the apt/yum module will install/remove/update everything in a single command
|
||||
|
||||
inventory:
|
||||
|
||||
* groups variable available as a hash to return the hosts in each group name
|
||||
* in YAML inventory, hosts can list their groups in inverted order now also (see tests/yaml_hosts)
|
||||
* YAML inventory is deprecated and will be removed in 0.7
|
||||
* ec2 inventory script
|
||||
* support ranges of hosts in the host file, like www[001-100].example.com (supports leading zeros and also not)
|
||||
|
||||
modules:
|
||||
|
||||
* fetch module now does not fail a system when requesting file paths (ex: logs) that don't exist
|
||||
* apt module now takes an optional install-recommends=yes|no (default yes)
|
||||
* fixes to the return codes of the copy module
|
||||
* copy module takes a remote md5sum to avoid large file transfer
|
||||
* various user and group module fixes (error handling, etc)
|
||||
* apt module now takes an optional force parameter
|
||||
* slightly better psychic service status handling for the service module
|
||||
* fetch module fixes for SSH connection type
|
||||
* modules now consistently all take yes/no for boolean parameters (and DWIM on true/false/1/0/y/n/etc)
|
||||
* setup module no longer saves to disk, template module now only used in playbooks
|
||||
* setup module no longer needs to run twice per playbook
|
||||
* apt module now passes DEBIAN_FRONTEND=noninteractive
|
||||
* mount module (manages active mounts + fstab)
|
||||
* setup module fixes if no ipv6 support
|
||||
* internals: template in common module boilerplate, also causes less SSH operations when used
|
||||
* git module fixes
|
||||
* setup module overhaul, more modular
|
||||
* minor caching logic added to inventory to reduce hammering of inventory scripts.
|
||||
* MySQL and PostgreSQL modules for user and db management
|
||||
* vars_prompt now supports private password entry (see examples/playbooks/prompts.yml)
|
||||
* yum module modified to be more tolerant of plugins spewing random console messages (ex: RHN)
|
||||
|
||||
internals:
|
||||
|
||||
* when sudoing to root, still use /etc/ansible/setup as the metadata path, as if root
|
||||
* paramiko is now only imported if needed when running from source checkout
|
||||
* cowsay support on Ubuntu
|
||||
* various ssh connection fixes for old Ubuntu clients
|
||||
* ./hacking/test-module now supports options like ansible takes and has a debugger mode
|
||||
* sudoing to a user other than root now works more seamlessly (uses /tmp, avoids umask issues)
|
||||
|
||||
0.5 "Amsterdam" ------- July 04, 2012
|
||||
|
||||
* Service module gets more accurate service states when running with upstart
|
||||
* Jinja2 usage in playbooks (not templates), reinstated, supports %include directive
|
||||
* support for --connection ssh (supports Kerberos, bastion hosts, etc), requires ControlMaster
|
||||
* misc tracebacks replaced with error messages
|
||||
* various API/internals refactoring
|
||||
* vars can be built from other variables
|
||||
* support for exclusion of hosts/groups with "!groupname"
|
||||
* various changes to support md5 tool differences for FreeBSD nodes & OS X clients
|
||||
* "unparseable" command output shows in command output for easier debugging
|
||||
* mktemp is no longer required on remotes (not available on BSD)
|
||||
* support for older versions of python-apt in the apt module
|
||||
* a new "assemble" module, for constructing files from pieces of files (inspired by Puppet "fragments" idiom)
|
||||
* ability to override most default values with ANSIBLE_FOO environment variables
|
||||
* --module-path parameter can support multiple directories seperated with the OS path seperator
|
||||
* with_items can take a variable of type list
|
||||
* ansible_python_interpreter variable available for systems with more than one Python
|
||||
* BIOS and VMware "fact" upgrades
|
||||
* cowsay is used by ansible-playbook if installed to improve output legibility (try installing it)
|
||||
* authorized_key module
|
||||
* SELinux facts now sourced from the python selinux library
|
||||
* removed module debug option -D
|
||||
* added --verbose, which shows output from successful playbook operations
|
||||
* print the output of the raw command inside /usr/bin/ansible as with command/shell
|
||||
* basic setup module support for Solaris
|
||||
* ./library relative to the playbook is always in path so modules can be included in tarballs with playbooks
|
||||
|
||||
0.4 "Unchained" ------- May 23, 2012
|
||||
|
||||
Internals/Core
|
||||
* internal inventory API now more object oriented, parsers decoupled
|
||||
* async handling improvements
|
||||
* misc fixes for running ansible on OS X (overlord only)
|
||||
* sudo improvements, now works much more smoothly
|
||||
* sudo to a particular user with -U/--sudo-user, or using 'sudo_user: foo' in a playbook
|
||||
* --private-key CLI option to work with pem files
|
||||
|
||||
Inventory
|
||||
* can use -i host1,host2,host3:port to specify hosts not in inventory (replaces --override-hosts)
|
||||
* ansible INI style format can do groups of groups [groupname:children] and group vars [groupname:vars]
|
||||
* groups and users module takes an optional system=yes|no on creation (default no)
|
||||
* list of hosts in playbooks can be expressed as a YAML list in addition to ; delimited
|
||||
|
||||
Playbooks
|
||||
* variables can be replaced like ${foo.nested_hash_key.nested_subkey[array_index]}
|
||||
* unicode now ok in templates (assumes utf8)
|
||||
* able to pass host specifier or group name in to "hosts:" with --extra-vars
|
||||
* ansible-pull script and example playbook (extreme scaling, remediation)
|
||||
* inventory_hostname variable available that contains the value of the host as ansible knows it
|
||||
* variables in the 'all' section can be used to define other variables based on those values
|
||||
* 'group_names' is now a variable made available to templates
|
||||
* first_available_file feature, see selective_file_sources.yml in examples/playbooks for info
|
||||
* --extra-vars="a=2 b=3" etc, now available to inject parameters into playbooks from CLI
|
||||
|
||||
Incompatible Changes
|
||||
* jinja2 is only usable in templates, not playbooks, use $foo instead
|
||||
* --override-hosts removed, can use -i with comma notation (-i "ahost,bhost")
|
||||
* modules can no longer include stderr output (paramiko limitation from sudo)
|
||||
|
||||
Module Changes
|
||||
* tweaks to SELinux implementation for file module
|
||||
* fixes for yum module corner cases on EL5
|
||||
* file module now correctly returns the mode in octal
|
||||
* fix for symlink handling in the file module
|
||||
* service takes an enable=yes|no which works with chkconfig or updates-rc.d as appropriate
|
||||
* service module works better on Ubuntu
|
||||
* git module now does resets and such to work more smoothly on updates
|
||||
* modules all now log to syslog
|
||||
* enabled=yes|no on a service can be used to toggle chkconfig & updates-rc.d states
|
||||
* git module supports branch=
|
||||
* service fixes to better detect status using return codes of the service script
|
||||
* custom facts provided by the setup module mean no dependency on Ruby, facter, or ohai
|
||||
* service now has a state=reloaded
|
||||
* raw module for bootstrapping and talking to routers w/o Python, etc
|
||||
|
||||
Misc Bugfixes
|
||||
* fixes for variable parsing in only_if lines
|
||||
* misc fixes to key=value parsing
|
||||
* variables with mixed case now legal
|
||||
* fix to internals of hacking/test-module development script
|
||||
|
||||
|
||||
0.3 "Baluchitherium" -- April 23, 2012
|
||||
|
||||
* Packaging for Debian, Gentoo, and Arch
|
||||
* Improvements to the apt and yum modules
|
||||
* A virt module
|
||||
* SELinux support for the file module
|
||||
* Ability to use facts from other systems in templates (aka exported
|
||||
resources like support)
|
||||
* Built in Ansible facts so you don't need ohai, facter, or Ruby
|
||||
* tempdir selections that work with noexec mounted /tmp
|
||||
* templates happen locally, not remotely, so no dependency on
|
||||
python-jinja2 for remote computers
|
||||
* advanced inventory format in YAML allows more control over variables
|
||||
per host and per group
|
||||
* variables in playbooks can be structured/nested versus just a flat namespace
|
||||
* manpage upgrades (docs)
|
||||
* various bugfixes
|
||||
* can specify a default --user for playbooks rather than specifying it
|
||||
in the playbook file
|
||||
* able to specify ansible port in ansible host file (see docs)
|
||||
* refactored Inventory API to make it easier to write scripts using Ansible
|
||||
* looping capability for playbooks (with_items)
|
||||
* support for using sudo with a password
|
||||
* module arguments can be unicode
|
||||
* A local connection type, --connection=local, for use with cron or
|
||||
in kickstarts
|
||||
* better module debugging with -D
|
||||
* fetch module for pulling in files from remote hosts
|
||||
* command task supports creates=foo for idempotent semantics, won't run if file foo already exists
|
||||
|
||||
0.0.2 and 0.0.1
|
||||
|
||||
* Initial stages of project
|
||||
|
||||
@ -1,10 +0,0 @@
|
||||
Coding Guidelines
|
||||
=================
|
||||
|
||||
Hi! Thanks for your interest in contributing to Ansible. We document our Coding Guidelines in the [Developer Guide](https://docs.ansible.com/ansible/devel/dev_guide/). We particularly suggest you review:
|
||||
|
||||
* [Contributing your module to Ansible](https://docs.ansible.com/ansible/devel/dev_guide/developing_modules_checklist.html)
|
||||
|
||||
* [Development conventions, tips and pitfalls](https://docs.ansible.com/ansible/devel/dev_guide/developing_modules_best_practices.html)
|
||||
|
||||
Our [Community Guide](https://docs.ansible.com/ansible/devel/community/) may also help you connect with the community of Ansible developers.
|
||||
59
CONTRIBUTING.md
Normal file
59
CONTRIBUTING.md
Normal file
@ -0,0 +1,59 @@
|
||||
Contributing to Ansible
|
||||
=======================
|
||||
|
||||
It is required that you read the following information to learn how to contribute to this project.
|
||||
|
||||
Branch Info
|
||||
===========
|
||||
|
||||
Here's how to understand the branches.
|
||||
|
||||
* The devel branch corresponds to the latest ongoing release
|
||||
* Various release-X.Y branches exist for previous releases
|
||||
* All feature work happens on the development branch.
|
||||
* Major bug fixes will be made to the last release branch only
|
||||
* See CHANGELOG.md for release notes to track each release.
|
||||
|
||||
Patch Instructions
|
||||
==================
|
||||
|
||||
Contributions to the core and modules are greatly welcome.
|
||||
|
||||
* Required Process:
|
||||
* Submit github pull requests to the "ansible/devel" branch for features
|
||||
* Fixes for bugs may also be submitted to "ansible/release-X.Y" for the last release
|
||||
* Make sure "make tests" passes before submitting any requests.
|
||||
* Bonus points:
|
||||
* Joining the mailing list
|
||||
* Fixing bugs instead of sending bug reports.
|
||||
* Using squash merges
|
||||
* Updating the "rst/*" files in the "docsite/" directory and "docs/" manpage content
|
||||
* Adding more unit tests
|
||||
* Avoid:
|
||||
* Sending patches to the mailing list directly.
|
||||
* Sending feature pull requests to the 'release' branch instead of the devel branch
|
||||
* Sending pull requests to mpdehaan's personal ansible fork.
|
||||
* Sending pull requests about more than one feature in the same pull request.
|
||||
* Whitespace restructuring
|
||||
* Large scale refactoring without a discussion on the list
|
||||
|
||||
Coding Standards
|
||||
================
|
||||
|
||||
We're not too strict on style considerations, but we require:
|
||||
|
||||
* python 2.6 compliant code, unless in ansible modules, then python *2.4* compliant code (no 'with', etc)
|
||||
* 4-space indents, no tabs except in Makefiles
|
||||
* under_scores for method names and variables, not camelCase
|
||||
* GPLv3 license headers on all files, with copyright on new files with your name on it
|
||||
* no single-line if statements, deeply nested list comprehensions, or clever use of metaclasses -- keep it simple
|
||||
* comments where appropriate
|
||||
|
||||
Contributors License Agreement
|
||||
==============================
|
||||
|
||||
By contributing you agree that these contributions are your own (or approved by your employer) and you grant a full, complete, irrevocable
|
||||
copyright license to all users and developers of the project, present and future, persusant to the license of the project.
|
||||
|
||||
|
||||
|
||||
24
MANIFEST.in
24
MANIFEST.in
@ -1,24 +1,8 @@
|
||||
include README.rst
|
||||
include COPYING
|
||||
include SYMLINK_CACHE.json
|
||||
include requirements.txt
|
||||
include .coveragerc
|
||||
include shippable.yml
|
||||
include tox.ini
|
||||
include bin/ansible-test
|
||||
include README.md packaging/rpm/ansible.spec COPYING
|
||||
include examples/hosts
|
||||
include examples/ansible.cfg
|
||||
include examples/scripts/ConfigureRemotingForAnsible.ps1
|
||||
include examples/scripts/upgrade_to_ps3.ps1
|
||||
recursive-include lib/ansible/module_utils/powershell *
|
||||
recursive-include lib/ansible/modules *
|
||||
recursive-include lib/ansible/galaxy/data *
|
||||
graft examples/playbooks
|
||||
include packaging/distutils/setup.py
|
||||
recursive-include docs *
|
||||
recursive-include licenses *
|
||||
recursive-include packaging *
|
||||
recursive-include test *
|
||||
recursive-include library *
|
||||
include Makefile
|
||||
include MANIFEST.in
|
||||
include changelogs/CHANGELOG*.rst
|
||||
include contrib/README.md
|
||||
recursive-include contrib/inventory *
|
||||
|
||||
@ -1,5 +0,0 @@
|
||||
# Module Maintainer Guidelines
|
||||
|
||||
The Ansible Module Maintainer Guidelines can now be found in the [official Ansible community guide](https://docs.ansible.com/ansible/latest/community/maintainers.html).
|
||||
|
||||
See also the [Developers Guide](https://docs.ansible.com/ansible/latest/dev_guide/)
|
||||
345
Makefile
345
Makefile
@ -1,211 +1,107 @@
|
||||
#!/usr/bin/make
|
||||
# WARN: gmake syntax
|
||||
########################################################
|
||||
# Makefile for Ansible
|
||||
#
|
||||
# useful targets:
|
||||
# make sdist ---------------- produce a tarball
|
||||
# make srpm ----------------- produce a SRPM
|
||||
# make rpm ----------------- produce RPMs
|
||||
# make deb-src -------------- produce a DEB source
|
||||
# make deb ------------------ produce a DEB
|
||||
# make docs ----------------- rebuild the manpages (results are checked in)
|
||||
# make tests ---------------- run the tests (see https://docs.ansible.com/ansible/devel/dev_guide/testing_units.html for requirements)
|
||||
# make tests ---------------- run the tests
|
||||
# make pyflakes, make pep8 -- source code checks
|
||||
|
||||
########################################################
|
||||
# variable section
|
||||
|
||||
NAME = ansible
|
||||
NAME = "ansible"
|
||||
OS = $(shell uname -s)
|
||||
PREFIX ?= '/usr/local'
|
||||
|
||||
# Manpages are currently built with asciidoc -- would like to move to markdown
|
||||
# This doesn't evaluate until it's called. The -D argument is the
|
||||
# directory of the target file ($@), kinda like `dirname`.
|
||||
MANPAGES ?= $(patsubst %.rst.in,%,$(wildcard ./docs/man/man1/ansible*.1.rst.in))
|
||||
ifneq ($(shell which rst2man 2>/dev/null),)
|
||||
ASCII2MAN = rst2man $< $@
|
||||
else ifneq ($(shell which rst2man.py 2>/dev/null),)
|
||||
ASCII2MAN = rst2man.py $< $@
|
||||
else
|
||||
ASCII2MAN = @echo "ERROR: rst2man from docutils command is not installed but is required to build $(MANPAGES)" && exit 1
|
||||
endif
|
||||
GENERATE_CLI = docs/bin/generate_man.py
|
||||
ASCII2MAN = a2x -D $(dir $@) -d manpage -f manpage $<
|
||||
ASCII2HTMLMAN = a2x -D docs/html/man/ -d manpage -f xhtml
|
||||
MANPAGES := docs/man/man1/ansible.1 docs/man/man1/ansible-playbook.1 docs/man/man1/ansible-pull.1
|
||||
|
||||
PYTHON=python
|
||||
SITELIB = $(shell $(PYTHON) -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")
|
||||
SITELIB = $(shell python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")
|
||||
|
||||
# fetch version from project release.py as single source-of-truth
|
||||
VERSION := $(shell $(PYTHON) packaging/release/versionhelper/version_helper.py --raw || echo error)
|
||||
ifeq ($(findstring error,$(VERSION)), error)
|
||||
$(error "version_helper failed")
|
||||
endif
|
||||
# VERSION file provides one place to update the software version
|
||||
VERSION := $(shell cat VERSION)
|
||||
|
||||
MAJOR_VERSION := $(shell $(PYTHON) packaging/release/versionhelper/version_helper.py --majorversion)
|
||||
CODENAME := $(shell $(PYTHON) packaging/release/versionhelper/version_helper.py --codename)
|
||||
|
||||
# if a specific release was not requested, set to 1 (RPMs have "fancier" logic for this further down)
|
||||
RELEASE ?= 1
|
||||
|
||||
# Get the branch information from git
|
||||
### Get the branch information from git
|
||||
ifneq ($(shell which git),)
|
||||
GIT_DATE := $(shell git log -n 1 --format="%ai")
|
||||
GIT_HASH := $(shell git log -n 1 --format="%h")
|
||||
GIT_BRANCH := $(shell git rev-parse --abbrev-ref HEAD | sed 's/[-_.\/]//g')
|
||||
GITINFO = .$(GIT_HASH).$(GIT_BRANCH)
|
||||
else
|
||||
GITINFO = ""
|
||||
endif
|
||||
|
||||
ifeq ($(shell echo $(OS) | egrep -c 'Darwin|FreeBSD|OpenBSD|DragonFly'),1)
|
||||
DATE := $(shell date -j -r $(shell git log -n 1 --format="%at") +%Y%m%d%H%M)
|
||||
CPUS ?= $(shell sysctl hw.ncpu|awk '{print $$2}')
|
||||
ifeq ($(OS), FreeBSD)
|
||||
DATE := $(shell date -j -f "%Y-%m-%d %H:%M:%s" "$(GIT_DATE)" +%Y%m%d%H%M)
|
||||
else
|
||||
ifeq ($(OS), Darwin)
|
||||
DATE := $(shell date -j -f "%Y-%m-%d %H:%M:%S" "$(GIT_DATE)" +%Y%m%d%H%M)
|
||||
else
|
||||
DATE := $(shell date --utc --date="$(GIT_DATE)" +%Y%m%d%H%M)
|
||||
CPUS ?= $(shell nproc)
|
||||
endif
|
||||
|
||||
# DEB build parameters
|
||||
DEBUILD_BIN ?= debuild
|
||||
DEBUILD_OPTS = --source-option="-I"
|
||||
DPUT_BIN ?= dput
|
||||
DPUT_OPTS ?=
|
||||
DEB_DATE := $(shell LC_TIME=C date +"%a, %d %b %Y %T %z")
|
||||
DEB_VERSION ?= $(shell $(PYTHON) packaging/release/versionhelper/version_helper.py --debversion)
|
||||
ifeq ($(OFFICIAL),yes)
|
||||
DEB_RELEASE ?= $(shell $(PYTHON) packaging/release/versionhelper/version_helper.py --debrelease)ppa
|
||||
# Sign OFFICIAL builds using 'DEBSIGN_KEYID'
|
||||
# DEBSIGN_KEYID is required when signing
|
||||
ifneq ($(DEBSIGN_KEYID),)
|
||||
DEBUILD_OPTS += -k$(DEBSIGN_KEYID)
|
||||
endif
|
||||
else
|
||||
DEB_RELEASE ?= 100.git$(DATE)$(GITINFO)
|
||||
# Do not sign unofficial builds
|
||||
DEBUILD_OPTS += -uc -us
|
||||
DPUT_OPTS += -u
|
||||
endif
|
||||
DEBUILD = $(DEBUILD_BIN) $(DEBUILD_OPTS)
|
||||
DEB_PPA ?= ppa
|
||||
# Choose the desired Ubuntu release: lucid precise saucy trusty
|
||||
DEB_DIST ?= unstable
|
||||
|
||||
# pbuilder parameters
|
||||
PBUILDER_ARCH ?= amd64
|
||||
PBUILDER_CACHE_DIR = /var/cache/pbuilder
|
||||
PBUILDER_BIN ?= pbuilder
|
||||
PBUILDER_OPTS ?= --debootstrapopts --variant=buildd --architecture $(PBUILDER_ARCH) --debbuildopts -b
|
||||
|
||||
# RPM build parameters
|
||||
RPMSPECDIR= packaging/rpm
|
||||
RPMSPEC = $(RPMSPECDIR)/ansible.spec
|
||||
RPMDIST = $(shell rpm --eval '%{?dist}')
|
||||
|
||||
ifneq ($(OFFICIAL),yes)
|
||||
RPMRELEASE = 100.git$(DATE)$(GITINFO)
|
||||
RPMDIST = $(shell rpm --eval '%dist')
|
||||
RPMRELEASE = 1
|
||||
ifeq ($(OFFICIAL),)
|
||||
RPMRELEASE = 0.git$(DATE)
|
||||
endif
|
||||
ifeq ($(PUBLISH),nightly)
|
||||
# https://fedoraproject.org/wiki/Packaging:Versioning#Snapshots
|
||||
RPMRELEASE = $(RELEASE).$(DATE)git.$(GIT_HASH)
|
||||
endif
|
||||
|
||||
RPMVERSION ?= $(shell $(PYTHON) packaging/release/versionhelper/version_helper.py --baseversion)
|
||||
RPMRELEASE ?= $(shell $(PYTHON) packaging/release/versionhelper/version_helper.py --rpmrelease)
|
||||
RPMNVR = "$(NAME)-$(RPMVERSION)-$(RPMRELEASE)$(RPMDIST)$(REPOTAG)"
|
||||
|
||||
# MOCK build parameters
|
||||
MOCK_BIN ?= mock
|
||||
MOCK_CFG ?=
|
||||
|
||||
# dynamically add repotag define only if specified
|
||||
ifneq ($(REPOTAG),)
|
||||
EXTRA_RPM_DEFINES += --define "repotag $(REPOTAG)"
|
||||
endif
|
||||
|
||||
# ansible-test parameters
|
||||
ANSIBLE_TEST ?= bin/ansible-test
|
||||
TEST_FLAGS ?=
|
||||
|
||||
# ansible-test units parameters (make test / make test-py3)
|
||||
PYTHON_VERSION ?= $(shell python2 -c 'import sys; print("%s.%s" % sys.version_info[:2])')
|
||||
PYTHON3_VERSION ?= $(shell python3 -c 'import sys; print("%s.%s" % sys.version_info[:2])')
|
||||
|
||||
# ansible-test integration parameters (make integration)
|
||||
IMAGE ?= centos7
|
||||
TARGET ?=
|
||||
RPMNVR = "$(NAME)-$(VERSION)-$(RPMRELEASE)$(RPMDIST)"
|
||||
|
||||
########################################################
|
||||
|
||||
.PHONY: all
|
||||
all: clean python
|
||||
|
||||
.PHONY: tests
|
||||
tests:
|
||||
$(ANSIBLE_TEST) units -v --python $(PYTHON_VERSION) $(TEST_FLAGS)
|
||||
PYTHONPATH=./lib nosetests -d -v
|
||||
|
||||
.PHONY: tests-py3
|
||||
tests-py3:
|
||||
$(ANSIBLE_TEST) units -v --python $(PYTHON3_VERSION) $(TEST_FLAGS)
|
||||
# To force a rebuild of the docs run 'touch VERSION && make docs'
|
||||
docs: $(MANPAGES) modulepages
|
||||
|
||||
.PHONY: tests-nonet
|
||||
tests-nonet:
|
||||
$(ANSIBLE_TEST) units -v --python $(PYTHON_VERSION) $(TEST_FLAGS) --exclude test/units/modules/network/
|
||||
|
||||
.PHONY: integration
|
||||
integration:
|
||||
$(ANSIBLE_TEST) integration -v --docker $(IMAGE) $(TARGET) $(TEST_FLAGS)
|
||||
|
||||
.PHONY: authors
|
||||
authors:
|
||||
sh hacking/authors.sh
|
||||
|
||||
# Regenerate %.1.rst if %.1.rst.in has been modified more
|
||||
# recently than %.1.rst.
|
||||
%.1.rst: %.1.rst.in
|
||||
# Regenerate %.1.asciidoc if %.1.asciidoc.in has been modified more
|
||||
# recently than %.1.asciidoc.
|
||||
%.1.asciidoc: %.1.asciidoc.in
|
||||
sed "s/%VERSION%/$(VERSION)/" $< > $@
|
||||
rm $<
|
||||
|
||||
# Regenerate %.1 if %.1.rst or release.py has been modified more
|
||||
# recently than %.1. (Implicitly runs the %.1.rst recipe)
|
||||
%.1: %.1.rst lib/ansible/release.py
|
||||
# Regenerate %.1 if %.1.asciidoc or VERSION has been modified more
|
||||
# recently than %.1. (Implicitly runs the %.1.asciidoc recipe)
|
||||
%.1: %.1.asciidoc VERSION
|
||||
$(ASCII2MAN)
|
||||
|
||||
.PHONY: loc
|
||||
loc:
|
||||
sloccount lib library bin
|
||||
|
||||
.PHONY: pep8
|
||||
pep8:
|
||||
$(ANSIBLE_TEST) sanity --test pep8 --python $(PYTHON_VERSION) $(TEST_FLAGS)
|
||||
@echo "#############################################"
|
||||
@echo "# Running PEP8 Compliance Tests"
|
||||
@echo "#############################################"
|
||||
-pep8 -r --ignore=E501,E221,W291,W391,E302,E251,E203,W293,E231,E303,E201,E225,E261,E241 lib/ bin/
|
||||
-pep8 -r --ignore=E501,E221,W291,W391,E302,E251,E203,W293,E231,E303,E201,E225,E261,E241 --filename "*" library/
|
||||
|
||||
.PHONY: pyflakes
|
||||
pyflakes:
|
||||
pyflakes lib/ansible/*.py lib/ansible/*/*.py bin/*
|
||||
pyflakes lib/ansible/*.py bin/*
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
@echo "Cleaning up distutils stuff"
|
||||
rm -rf build
|
||||
rm -rf dist
|
||||
rm -rf lib/ansible.egg-info/
|
||||
@echo "Cleaning up byte compiled python stuff"
|
||||
find . -type f -regex ".*\.py[co]$$" -delete
|
||||
find . -type d -name "__pycache__" -delete
|
||||
@echo "Cleaning up editor backup files"
|
||||
find . -type f -not -path ./test/units/inventory_test_data/group_vars/noparse/all.yml~ \( -name "*~" -or -name "#*" \) -delete
|
||||
find . -type f \( -name "*~" -or -name "#*" \) -delete
|
||||
find . -type f \( -name "*.swp" \) -delete
|
||||
@echo "Cleaning up manpage stuff"
|
||||
find ./docs/man -type f -name "*.xml" -delete
|
||||
find ./docs/man -type f -name "*.rst" -delete
|
||||
find ./docs/man -type f -name "*.asciidoc" -delete
|
||||
find ./docs/man/man3 -type f -name "*.3" -delete
|
||||
rm -f ./docs/man/man1/*
|
||||
@echo "Cleaning up output from test runs"
|
||||
rm -rf test/test_data
|
||||
rm -rf shippable/
|
||||
rm -rf logs/
|
||||
rm -rf .cache/
|
||||
rm -f test/units/.coverage*
|
||||
rm -rf test/results/*/*
|
||||
find test/ -type f -name '*.retry' -delete
|
||||
@echo "Cleaning up RPM building stuff"
|
||||
rm -rf MANIFEST rpm-build
|
||||
@echo "Cleaning up Debian building stuff"
|
||||
@ -213,66 +109,21 @@ clean:
|
||||
rm -rf deb-build
|
||||
rm -rf docs/json
|
||||
rm -rf docs/js
|
||||
@echo "Cleaning up authors file"
|
||||
rm -f AUTHORS.TXT
|
||||
@echo "Cleaning up docsite"
|
||||
$(MAKE) -C docs/docsite clean
|
||||
|
||||
.PHONY: python
|
||||
python:
|
||||
$(PYTHON) setup.py build
|
||||
python setup.py build
|
||||
|
||||
.PHONY: install
|
||||
install:
|
||||
$(PYTHON) setup.py install
|
||||
python setup.py install
|
||||
|
||||
install_manpages:
|
||||
gzip -9 $(wildcard ./docs/man/man1/ansible*.1)
|
||||
cp $(wildcard ./docs/man/man1/ansible*.1.gz) $(PREFIX)/man/man1/
|
||||
|
||||
.PHONY: sdist
|
||||
sdist: clean docs
|
||||
$(PYTHON) setup.py sdist
|
||||
python setup.py sdist -t MANIFEST.in
|
||||
|
||||
.PHONY: sdist_upload
|
||||
sdist_upload: clean docs
|
||||
$(PYTHON) setup.py sdist upload 2>&1 |tee upload.log
|
||||
|
||||
.PHONY: changelog
|
||||
changelog:
|
||||
packaging/release/changelogs/changelog.py release -vv && packaging/release/changelogs/changelog.py generate -vv
|
||||
|
||||
.PHONY: rpmcommon
|
||||
rpmcommon: sdist
|
||||
@mkdir -p rpm-build
|
||||
@cp dist/*.gz rpm-build/
|
||||
@cp $(RPMSPEC) rpm-build/$(NAME).spec
|
||||
@sed -e 's#^Version:.*#Version: $(VERSION)#' -e 's#^Release:.*#Release: $(RPMRELEASE)%{?dist}#' $(RPMSPEC) >rpm-build/$(NAME).spec
|
||||
|
||||
.PHONY: mock-srpm
|
||||
mock-srpm: /etc/mock/$(MOCK_CFG).cfg rpmcommon
|
||||
$(MOCK_BIN) -r $(MOCK_CFG) $(MOCK_ARGS) --resultdir rpm-build/ --bootstrap-chroot --old-chroot --buildsrpm --spec rpm-build/$(NAME).spec --sources rpm-build/ \
|
||||
--define "rpmversion $(RPMVERSION)" \
|
||||
--define "upstream_version $(VERSION)" \
|
||||
--define "rpmrelease $(RPMRELEASE)" \
|
||||
$(EXTRA_RPM_DEFINES)
|
||||
@echo "#############################################"
|
||||
@echo "Ansible SRPM is built:"
|
||||
@echo rpm-build/*.src.rpm
|
||||
@echo "#############################################"
|
||||
|
||||
.PHONY: mock-rpm
|
||||
mock-rpm: /etc/mock/$(MOCK_CFG).cfg mock-srpm
|
||||
$(MOCK_BIN) -r $(MOCK_CFG) $(MOCK_ARGS) --resultdir rpm-build/ --bootstrap-chroot --old-chroot --rebuild rpm-build/$(NAME)-*.src.rpm \
|
||||
--define "rpmversion $(RPMVERSION)" \
|
||||
--define "upstream_version $(VERSION)" \
|
||||
--define "rpmrelease $(RPMRELEASE)" \
|
||||
$(EXTRA_RPM_DEFINES)
|
||||
@echo "#############################################"
|
||||
@echo "Ansible RPM is built:"
|
||||
@echo rpm-build/*.noarch.rpm
|
||||
@echo "#############################################"
|
||||
|
||||
.PHONY: srpm
|
||||
srpm: rpmcommon
|
||||
@rpmbuild --define "_topdir %(pwd)/rpm-build" \
|
||||
--define "_builddir %{_topdir}" \
|
||||
@ -280,10 +131,6 @@ srpm: rpmcommon
|
||||
--define "_srcrpmdir %{_topdir}" \
|
||||
--define "_specdir $(RPMSPECDIR)" \
|
||||
--define "_sourcedir %{_topdir}" \
|
||||
--define "upstream_version $(VERSION)" \
|
||||
--define "rpmversion $(RPMVERSION)" \
|
||||
--define "rpmrelease $(RPMRELEASE)" \
|
||||
$(EXTRA_RPM_DEFINES) \
|
||||
-bs rpm-build/$(NAME).spec
|
||||
@rm -f rpm-build/$(NAME).spec
|
||||
@echo "#############################################"
|
||||
@ -291,7 +138,6 @@ srpm: rpmcommon
|
||||
@echo " rpm-build/$(RPMNVR).src.rpm"
|
||||
@echo "#############################################"
|
||||
|
||||
.PHONY: rpm
|
||||
rpm: rpmcommon
|
||||
@rpmbuild --define "_topdir %(pwd)/rpm-build" \
|
||||
--define "_builddir %{_topdir}" \
|
||||
@ -300,11 +146,6 @@ rpm: rpmcommon
|
||||
--define "_specdir $(RPMSPECDIR)" \
|
||||
--define "_sourcedir %{_topdir}" \
|
||||
--define "_rpmfilename $(RPMNVR).%%{ARCH}.rpm" \
|
||||
--define "__python `which $(PYTHON)`" \
|
||||
--define "upstream_version $(VERSION)" \
|
||||
--define "rpmversion $(RPMVERSION)" \
|
||||
--define "rpmrelease $(RPMRELEASE)" \
|
||||
$(EXTRA_RPM_DEFINES) \
|
||||
-ba rpm-build/$(NAME).spec
|
||||
@rm -f rpm-build/$(NAME).spec
|
||||
@echo "#############################################"
|
||||
@ -312,88 +153,30 @@ rpm: rpmcommon
|
||||
@echo " rpm-build/$(RPMNVR).noarch.rpm"
|
||||
@echo "#############################################"
|
||||
|
||||
.PHONY: debian
|
||||
debian: sdist
|
||||
@for DIST in $(DEB_DIST) ; do \
|
||||
mkdir -p deb-build/$${DIST} ; \
|
||||
tar -C deb-build/$${DIST} -xvf dist/$(NAME)-$(VERSION).tar.gz ; \
|
||||
cp -a packaging/debian deb-build/$${DIST}/$(NAME)-$(VERSION)/ ; \
|
||||
sed -ie "s|%VERSION%|$(DEB_VERSION)|g;s|%RELEASE%|$(DEB_RELEASE)|;s|%DIST%|$${DIST}|g;s|%DATE%|$(DEB_DATE)|g" deb-build/$${DIST}/$(NAME)-$(VERSION)/debian/changelog ; \
|
||||
done
|
||||
|
||||
.PHONY: deb
|
||||
deb: deb-src
|
||||
@for DIST in $(DEB_DIST) ; do \
|
||||
PBUILDER_OPTS="$(PBUILDER_OPTS) --distribution $${DIST} --basetgz $(PBUILDER_CACHE_DIR)/$${DIST}-$(PBUILDER_ARCH)-base.tgz --buildresult $(CURDIR)/deb-build/$${DIST}" ; \
|
||||
$(PBUILDER_BIN) create $${PBUILDER_OPTS} --othermirror "deb http://archive.ubuntu.com/ubuntu $${DIST} universe" ; \
|
||||
$(PBUILDER_BIN) update $${PBUILDER_OPTS} ; \
|
||||
$(PBUILDER_BIN) build $${PBUILDER_OPTS} deb-build/$${DIST}/$(NAME)_$(DEB_VERSION)-$(DEB_RELEASE)~$${DIST}.dsc ; \
|
||||
done
|
||||
@echo "#############################################"
|
||||
@echo "Ansible DEB artifacts:"
|
||||
@for DIST in $(DEB_DIST) ; do \
|
||||
echo deb-build/$${DIST}/$(NAME)_$(DEB_VERSION)-$(DEB_RELEASE)~$${DIST}_amd64.changes ; \
|
||||
done
|
||||
@echo "#############################################"
|
||||
|
||||
# Build package outside of pbuilder, with locally installed dependencies.
|
||||
# Install BuildRequires as noted in packaging/debian/control.
|
||||
.PHONY: local_deb
|
||||
local_deb: debian
|
||||
@for DIST in $(DEB_DIST) ; do \
|
||||
(cd deb-build/$${DIST}/$(NAME)-$(VERSION)/ && $(DEBUILD) -b) ; \
|
||||
done
|
||||
@echo "#############################################"
|
||||
@echo "Ansible DEB artifacts:"
|
||||
@for DIST in $(DEB_DIST) ; do \
|
||||
echo deb-build/$${DIST}/$(NAME)_$(DEB_VERSION)-$(DEB_RELEASE)~$${DIST}_amd64.changes ; \
|
||||
done
|
||||
@echo "#############################################"
|
||||
|
||||
.PHONY: deb-src
|
||||
deb-src: debian
|
||||
@for DIST in $(DEB_DIST) ; do \
|
||||
(cd deb-build/$${DIST}/$(NAME)-$(VERSION)/ && $(DEBUILD) -S) ; \
|
||||
done
|
||||
@echo "#############################################"
|
||||
@echo "Ansible DEB artifacts:"
|
||||
@for DIST in $(DEB_DIST) ; do \
|
||||
echo deb-build/$${DIST}/$(NAME)_$(DEB_VERSION)-$(DEB_RELEASE)~$${DIST}_source.changes ; \
|
||||
done
|
||||
@echo "#############################################"
|
||||
|
||||
.PHONY: deb-upload
|
||||
deb-upload: deb
|
||||
@for DIST in $(DEB_DIST) ; do \
|
||||
$(DPUT_BIN) $(DPUT_OPTS) $(DEB_PPA) deb-build/$${DIST}/$(NAME)_$(DEB_VERSION)-$(DEB_RELEASE)~$${DIST}_amd64.changes ; \
|
||||
done
|
||||
|
||||
.PHONY: deb-src-upload
|
||||
deb-src-upload: deb-src
|
||||
@for DIST in $(DEB_DIST) ; do \
|
||||
$(DPUT_BIN) $(DPUT_OPTS) $(DEB_PPA) deb-build/$${DIST}/$(NAME)_$(DEB_VERSION)-$(DEB_RELEASE)~$${DIST}_source.changes ; \
|
||||
done
|
||||
|
||||
.PHONY: epub
|
||||
epub:
|
||||
(cd docs/docsite/; CPUS=$(CPUS) $(MAKE) epub)
|
||||
deb: debian
|
||||
cp -r packaging/debian ./
|
||||
chmod 755 debian/rules
|
||||
fakeroot debian/rules clean
|
||||
fakeroot dh_install
|
||||
fakeroot debian/rules binary
|
||||
|
||||
# for arch or gentoo, read instructions in the appropriate 'packaging' subdirectory directory
|
||||
.PHONY: webdocs
|
||||
|
||||
modulepages:
|
||||
hacking/module_formatter.py -A $(VERSION) -t man -o docs/man/man3/ --module-dir=library --template-dir=hacking/templates
|
||||
|
||||
modulejson:
|
||||
mkdir -p docs/json
|
||||
hacking/module_formatter.py -A $(VERSION) -t json -o docs/json --module-dir=library --template-dir=hacking/templates
|
||||
|
||||
modulejs:
|
||||
mkdir -p docs/js
|
||||
make modulejson
|
||||
hacking/module_formatter.py -A $(VERSION) -t js -o docs/js --module-dir=docs/json --template-dir=hacking/templates
|
||||
|
||||
# because this requires Sphinx it is not run as part of every build, those building the RPM and so on can ignore this
|
||||
|
||||
webdocs:
|
||||
(cd docs/docsite/; CPUS=$(CPUS) $(MAKE) docs)
|
||||
(cd docsite; make docs)
|
||||
|
||||
.PHONY: generate_rst
|
||||
generate_rst: lib/ansible/cli/*.py
|
||||
mkdir -p ./docs/man/man1/ ; \
|
||||
PYTHONPATH=./lib $(GENERATE_CLI) --template-file=docs/templates/man.j2 --output-dir=docs/man/man1/ --output-format man lib/ansible/cli/*.py
|
||||
|
||||
|
||||
docs: generate_rst
|
||||
$(MAKE) $(MANPAGES)
|
||||
|
||||
.PHONY: alldocs
|
||||
alldocs: docs webdocs
|
||||
|
||||
version:
|
||||
@echo $(VERSION)
|
||||
|
||||
42
README.md
Normal file
42
README.md
Normal file
@ -0,0 +1,42 @@
|
||||
Ansible
|
||||
=======
|
||||
|
||||
Ansible is a radically simple configuration-management, deployment, task-execution, and
|
||||
multinode orchestration framework.
|
||||
|
||||
Read the documentation and more at http://ansible.cc
|
||||
|
||||
Design Principles
|
||||
=================
|
||||
|
||||
* Dead simple setup
|
||||
* Super fast & parallel by default
|
||||
* No server or client daemons; use existing SSHd
|
||||
* No additional software required on client boxes
|
||||
* Modules can be written in ANY language
|
||||
* Awesome API for creating very powerful distributed scripts
|
||||
* Be usable as non-root
|
||||
* The easiest config management system to use, ever.
|
||||
|
||||
Get Involved
|
||||
============
|
||||
|
||||
* [ansible-project mailing list](http://groups.google.com/group/ansible-project)
|
||||
* irc.freenode.net: #ansible
|
||||
|
||||
Branch Info
|
||||
===========
|
||||
|
||||
* Releases are named after Van Halen songs.
|
||||
* The devel branch corresponds to the release actively under development.
|
||||
* Various release-X.Y branches exist for previous releases
|
||||
* We'd love to have your contributions, read "CONTRIBUTING.md" for process notes.
|
||||
|
||||
Author
|
||||
======
|
||||
|
||||
Michael DeHaan -- michael.dehaan@gmail.com
|
||||
|
||||
[http://michaeldehaan.net](http://michaeldehaan.net/)
|
||||
|
||||
|
||||
113
README.rst
113
README.rst
@ -1,113 +0,0 @@
|
||||
|PyPI version| |Docs badge| |Chat badge| |Build Status|
|
||||
|
||||
*******
|
||||
Ansible
|
||||
*******
|
||||
|
||||
Ansible is a radically simple IT automation system. It handles
|
||||
configuration-management, application deployment, cloud provisioning,
|
||||
ad-hoc task-execution, and multinode orchestration -- including
|
||||
trivializing things like zero-downtime rolling updates with load
|
||||
balancers.
|
||||
|
||||
Read the documentation and more at https://ansible.com/
|
||||
|
||||
You can find installation instructions
|
||||
`here <https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html>`_ for a
|
||||
variety of platforms.
|
||||
|
||||
Most users should probably install a released version of Ansible from ``pip``, a package manager or
|
||||
our `release repository <https://releases.ansible.com/ansible/>`_. `Officially supported
|
||||
<https://www.ansible.com/ansible-engine>`_ builds of Ansible are also available. Some power users
|
||||
run directly from the development branch - while significant efforts are made to ensure that
|
||||
``devel`` is reasonably stable, you're more likely to encounter breaking changes when running
|
||||
Ansible this way.
|
||||
|
||||
Design Principles
|
||||
=================
|
||||
|
||||
* Have a dead simple setup process and a minimal learning curve.
|
||||
* Manage machines very quickly and in parallel.
|
||||
* Avoid custom-agents and additional open ports, be agentless by
|
||||
leveraging the existing SSH daemon.
|
||||
* Describe infrastructure in a language that is both machine and human
|
||||
friendly.
|
||||
* Focus on security and easy auditability/review/rewriting of content.
|
||||
* Manage new remote machines instantly, without bootstrapping any
|
||||
software.
|
||||
* Allow module development in any dynamic language, not just Python.
|
||||
* Be usable as non-root.
|
||||
* Be the easiest IT automation system to use, ever.
|
||||
|
||||
Get Involved
|
||||
============
|
||||
|
||||
* Read `Community
|
||||
Information <https://docs.ansible.com/ansible/latest/community>`_ for all
|
||||
kinds of ways to contribute to and interact with the project,
|
||||
including mailing list information and how to submit bug reports and
|
||||
code to Ansible.
|
||||
* All code submissions are done through pull requests to the ``devel`` branch.
|
||||
* Feel free to talk to us before making larger changes
|
||||
to avoid duplicate efforts. This not only helps everyone
|
||||
know what's going on, it also helps save time and effort if we decide
|
||||
some changes are needed.
|
||||
* Users list:
|
||||
`ansible-project <https://groups.google.com/group/ansible-project>`_
|
||||
* Development list:
|
||||
`ansible-devel <https://groups.google.com/group/ansible-devel>`_
|
||||
* Announcement list:
|
||||
`ansible-announce <https://groups.google.com/group/ansible-announce>`_
|
||||
-- read only
|
||||
* irc.freenode.net: #ansible
|
||||
* For the full list of Email Lists, IRC channels see the
|
||||
`Communication page <https://docs.ansible.com/ansible/latest/community/communication.html>`_
|
||||
|
||||
Branch Info
|
||||
===========
|
||||
|
||||
* Releases are named after Led Zeppelin songs. (Releases prior to 2.0
|
||||
were named after Van Halen songs.)
|
||||
* The ``devel`` branch corresponds to the release actively under
|
||||
development.
|
||||
* The ``stable-2.x`` branches exist for current releases.
|
||||
* Various release-X.Y branches exist for previous releases.
|
||||
* For information about the active branches see the
|
||||
`Ansible release and maintenance <https://docs.ansible.com/ansible/latest/reference_appendices/release_and_maintenance.html>`_ page.
|
||||
* We'd love to have your contributions, read the `Community
|
||||
Guide <https://docs.ansible.com/ansible/latest/community>`_ for notes on
|
||||
how to get started.
|
||||
|
||||
Roadmap
|
||||
=======
|
||||
|
||||
Based on team and community feedback, an initial roadmap will be published for a major or minor version (ex: 2.0, 2.1).
|
||||
Subminor versions will generally not have roadmaps published.
|
||||
|
||||
The `Ansible Roadmap page <https://docs.ansible.com/ansible/devel/roadmap/>`_ details what is planned and how to influence the roadmap.
|
||||
|
||||
Authors
|
||||
=======
|
||||
|
||||
Ansible was created by `Michael DeHaan <https://github.com/mpdehaan>`_
|
||||
(michael.dehaan/gmail/com) and has contributions from over 3700 users
|
||||
(and growing). Thanks everyone!
|
||||
|
||||
`Ansible <https://www.ansible.com>`_ is sponsored by `Red Hat, Inc.
|
||||
<https://www.redhat.com>`_
|
||||
|
||||
License
|
||||
=======
|
||||
|
||||
GNU General Public License v3.0
|
||||
|
||||
See `COPYING <COPYING>`_ to see the full text.
|
||||
|
||||
.. |PyPI version| image:: https://img.shields.io/pypi/v/ansible.svg
|
||||
:target: https://pypi.org/project/ansible
|
||||
.. |Docs badge| image:: https://img.shields.io/badge/docs-latest-brightgreen.svg
|
||||
:target: https://docs.ansible.com/ansible/latest/
|
||||
.. |Build Status| image:: https://api.shippable.com/projects/573f79d02a8192902e20e34b/badge?branch=devel
|
||||
:target: https://app.shippable.com/projects/573f79d02a8192902e20e34b
|
||||
.. |Chat badge| image:: https://img.shields.io/badge/chat-IRC-brightgreen.svg
|
||||
:target: https://docs.ansible.com/ansible/latest/community/communication.html
|
||||
13
RELEASES.txt
Normal file
13
RELEASES.txt
Normal file
@ -0,0 +1,13 @@
|
||||
Ansible Releases at a Glance
|
||||
============================
|
||||
|
||||
0.8 "Cathedral" ------- pending
|
||||
0.7 "Panama" ---------- 9-06-2012
|
||||
0.6 "Cabo" ------------ 8-06-2012
|
||||
0.5 "Amsterdam" ------- 7-04-2012
|
||||
0.4 "Unchained" ------- 5-23-2012
|
||||
0.3 "Baluchitherium" -- 4-23-2012
|
||||
0.0.2 Untitled
|
||||
0.0.1 Untitled
|
||||
|
||||
|
||||
244
bin/ansible
244
bin/ansible
@ -18,146 +18,122 @@
|
||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
########################################################
|
||||
from __future__ import (absolute_import, division, print_function)
|
||||
__metaclass__ = type
|
||||
|
||||
__requires__ = ['ansible']
|
||||
try:
|
||||
import pkg_resources
|
||||
except Exception:
|
||||
# Use pkg_resources to find the correct versions of libraries and set
|
||||
# sys.path appropriately when there are multiversion installs. But we
|
||||
# have code that better expresses the errors in the places where the code
|
||||
# is actually used (the deps are optional for many code paths) so we don't
|
||||
# want to fail here.
|
||||
pass
|
||||
|
||||
import os
|
||||
import shutil
|
||||
import sys
|
||||
import traceback
|
||||
import getpass
|
||||
|
||||
from ansible.errors import AnsibleError, AnsibleOptionsError, AnsibleParserError
|
||||
from ansible.module_utils._text import to_text
|
||||
from ansible.runner import Runner
|
||||
import ansible.constants as C
|
||||
from ansible import utils
|
||||
from ansible import errors
|
||||
from ansible import callbacks
|
||||
from ansible import inventory
|
||||
|
||||
########################################################
|
||||
|
||||
class Cli(object):
|
||||
''' code behind bin/ansible '''
|
||||
|
||||
# ----------------------------------------------
|
||||
|
||||
def __init__(self):
|
||||
self.stats = callbacks.AggregateStats()
|
||||
self.callbacks = callbacks.CliRunnerCallbacks()
|
||||
|
||||
# ----------------------------------------------
|
||||
|
||||
def parse(self):
|
||||
''' create an options parser for bin/ansible '''
|
||||
|
||||
parser = utils.base_parser(constants=C, runas_opts=True, subset_opts=True, async_opts=True,
|
||||
output_opts=True, connect_opts=True, usage='%prog <host-pattern> [options]')
|
||||
parser.add_option('-a', '--args', dest='module_args',
|
||||
help="module arguments", default=C.DEFAULT_MODULE_ARGS)
|
||||
parser.add_option('-m', '--module-name', dest='module_name',
|
||||
help="module name to execute (default=%s)" % C.DEFAULT_MODULE_NAME,
|
||||
default=C.DEFAULT_MODULE_NAME)
|
||||
options, args = parser.parse_args()
|
||||
self.callbacks.options = options
|
||||
|
||||
if len(args) == 0 or len(args) > 1:
|
||||
parser.print_help()
|
||||
sys.exit(1)
|
||||
return (options, args)
|
||||
|
||||
# ----------------------------------------------
|
||||
|
||||
def run(self, options, args):
|
||||
''' use Runner lib to do SSH things '''
|
||||
|
||||
pattern = args[0]
|
||||
|
||||
inventory_manager = inventory.Inventory(options.inventory)
|
||||
hosts = inventory_manager.list_hosts(pattern)
|
||||
if len(hosts) == 0:
|
||||
print >>sys.stderr, "No hosts matched"
|
||||
sys.exit(1)
|
||||
|
||||
sshpass = None
|
||||
sudopass = None
|
||||
if options.ask_pass:
|
||||
sshpass = getpass.getpass(prompt="SSH password: ")
|
||||
if options.ask_sudo_pass:
|
||||
sudopass = getpass.getpass(prompt="sudo password: ")
|
||||
options.sudo = True
|
||||
if options.sudo_user:
|
||||
options.sudo = True
|
||||
options.sudo_user = options.sudo_user or C.DEFAULT_SUDO_USER
|
||||
if options.tree:
|
||||
utils.prepare_writeable_dir(options.tree)
|
||||
|
||||
runner = Runner(
|
||||
module_name=options.module_name, module_path=options.module_path,
|
||||
module_args=options.module_args,
|
||||
remote_user=options.remote_user, remote_pass=sshpass,
|
||||
inventory=inventory_manager, timeout=options.timeout,
|
||||
private_key_file=options.private_key_file,
|
||||
forks=options.forks,
|
||||
pattern=pattern,
|
||||
callbacks=self.callbacks, sudo=options.sudo,
|
||||
sudo_pass=sudopass,sudo_user=options.sudo_user,
|
||||
transport=options.connection, subset=options.subset
|
||||
)
|
||||
|
||||
if options.seconds:
|
||||
print "background launch...\n\n"
|
||||
results, poller = runner.run_async(options.seconds)
|
||||
results = self.poll_while_needed(poller, options)
|
||||
else:
|
||||
results = runner.run()
|
||||
|
||||
return (runner, results)
|
||||
|
||||
# ----------------------------------------------
|
||||
|
||||
def poll_while_needed(self, poller, options):
|
||||
''' summarize results from Runner '''
|
||||
|
||||
# BACKGROUND POLL LOGIC when -B and -P are specified
|
||||
if options.seconds and options.poll_interval > 0:
|
||||
poller.wait(options.seconds, options.poll_interval)
|
||||
|
||||
return poller.results
|
||||
|
||||
|
||||
# Used for determining if the system is running a new enough python version
|
||||
# and should only restrict on our documented minimum versions
|
||||
_PY3_MIN = sys.version_info[:2] >= (3, 5)
|
||||
_PY2_MIN = (2, 6) <= sys.version_info[:2] < (3,)
|
||||
_PY_MIN = _PY3_MIN or _PY2_MIN
|
||||
if not _PY_MIN:
|
||||
raise SystemExit('ERROR: Ansible requires a minimum of Python2 version 2.6 or Python3 version 3.5. Current version: %s' % ''.join(sys.version.splitlines()))
|
||||
|
||||
|
||||
class LastResort(object):
|
||||
# OUTPUT OF LAST RESORT
|
||||
def display(self, msg, log_only=None):
|
||||
print(msg, file=sys.stderr)
|
||||
|
||||
def error(self, msg, wrap_text=None):
|
||||
print(msg, file=sys.stderr)
|
||||
|
||||
########################################################
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
display = LastResort()
|
||||
|
||||
try: # bad ANSIBLE_CONFIG or config options can force ugly stacktrace
|
||||
import ansible.constants as C
|
||||
from ansible.utils.display import Display
|
||||
except AnsibleOptionsError as e:
|
||||
display.error(to_text(e), wrap_text=False)
|
||||
sys.exit(5)
|
||||
|
||||
cli = None
|
||||
me = os.path.basename(sys.argv[0])
|
||||
|
||||
cli = Cli()
|
||||
(options, args) = cli.parse()
|
||||
try:
|
||||
display = Display()
|
||||
display.debug("starting run")
|
||||
(runner, results) = cli.run(options, args)
|
||||
for result in results['contacted'].values():
|
||||
if 'failed' in result or result.get('rc', 0) != 0:
|
||||
sys.exit(2)
|
||||
if results['dark']:
|
||||
sys.exit(2)
|
||||
except errors.AnsibleError, e:
|
||||
# Generic handler for ansible specific errors
|
||||
print "ERROR: %s" % str(e)
|
||||
sys.exit(1)
|
||||
|
||||
sub = None
|
||||
target = me.split('-')
|
||||
if target[-1][0].isdigit():
|
||||
# Remove any version or python version info as downstreams
|
||||
# sometimes add that
|
||||
target = target[:-1]
|
||||
|
||||
if len(target) > 1:
|
||||
sub = target[1]
|
||||
myclass = "%sCLI" % sub.capitalize()
|
||||
elif target[0] == 'ansible':
|
||||
sub = 'adhoc'
|
||||
myclass = 'AdHocCLI'
|
||||
else:
|
||||
raise AnsibleError("Unknown Ansible alias: %s" % me)
|
||||
|
||||
try:
|
||||
mycli = getattr(__import__("ansible.cli.%s" % sub, fromlist=[myclass]), myclass)
|
||||
except ImportError as e:
|
||||
# ImportError members have changed in py3
|
||||
if 'msg' in dir(e):
|
||||
msg = e.msg
|
||||
else:
|
||||
msg = e.message
|
||||
if msg.endswith(' %s' % sub):
|
||||
raise AnsibleError("Ansible sub-program not implemented: %s" % me)
|
||||
else:
|
||||
raise
|
||||
|
||||
try:
|
||||
args = [to_text(a, errors='surrogate_or_strict') for a in sys.argv]
|
||||
except UnicodeError:
|
||||
display.error('Command line args are not in utf-8, unable to continue. Ansible currently only understands utf-8')
|
||||
display.display(u"The full traceback was:\n\n%s" % to_text(traceback.format_exc()))
|
||||
exit_code = 6
|
||||
else:
|
||||
cli = mycli(args)
|
||||
cli.parse()
|
||||
exit_code = cli.run()
|
||||
|
||||
except AnsibleOptionsError as e:
|
||||
cli.parser.print_help()
|
||||
display.error(to_text(e), wrap_text=False)
|
||||
exit_code = 5
|
||||
except AnsibleParserError as e:
|
||||
display.error(to_text(e), wrap_text=False)
|
||||
exit_code = 4
|
||||
# TQM takes care of these, but leaving comment to reserve the exit codes
|
||||
# except AnsibleHostUnreachable as e:
|
||||
# display.error(str(e))
|
||||
# exit_code = 3
|
||||
# except AnsibleHostFailed as e:
|
||||
# display.error(str(e))
|
||||
# exit_code = 2
|
||||
except AnsibleError as e:
|
||||
display.error(to_text(e), wrap_text=False)
|
||||
exit_code = 1
|
||||
except KeyboardInterrupt:
|
||||
display.error("User interrupted execution")
|
||||
exit_code = 99
|
||||
except Exception as e:
|
||||
if C.DEFAULT_DEBUG:
|
||||
# Show raw stacktraces in debug mode, It also allow pdb to
|
||||
# enter post mortem mode.
|
||||
raise
|
||||
have_cli_options = cli is not None and cli.options is not None
|
||||
display.error("Unexpected Exception, this is probably a bug: %s" % to_text(e), wrap_text=False)
|
||||
if not have_cli_options or have_cli_options and cli.options.verbosity > 2:
|
||||
log_only = False
|
||||
if hasattr(e, 'orig_exc'):
|
||||
display.vvv('\nexception type: %s' % to_text(type(e.orig_exc)))
|
||||
why = to_text(e.orig_exc)
|
||||
if to_text(e) != why:
|
||||
display.vvv('\noriginal msg: %s' % why)
|
||||
else:
|
||||
display.display("to see the full traceback, use -vvv")
|
||||
log_only = True
|
||||
display.display(u"the full traceback was:\n\n%s" % to_text(traceback.format_exc()), log_only=log_only)
|
||||
exit_code = 250
|
||||
finally:
|
||||
# Remove ansible tmpdir
|
||||
shutil.rmtree(C.DEFAULT_LOCAL_TMP, True)
|
||||
|
||||
sys.exit(exit_code)
|
||||
|
||||
@ -1 +0,0 @@
|
||||
ansible
|
||||
@ -1,323 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
# Copyright: (c) 2017, Ansible Project
|
||||
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||
from __future__ import (absolute_import, division, print_function)
|
||||
|
||||
__metaclass__ = type
|
||||
__requires__ = ['ansible']
|
||||
|
||||
try:
|
||||
import pkg_resources
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
import fcntl
|
||||
import hashlib
|
||||
import os
|
||||
import signal
|
||||
import socket
|
||||
import sys
|
||||
import time
|
||||
import traceback
|
||||
import errno
|
||||
import json
|
||||
|
||||
from contextlib import contextmanager
|
||||
|
||||
from ansible import constants as C
|
||||
from ansible.module_utils._text import to_bytes, to_text
|
||||
from ansible.module_utils.six import PY3
|
||||
from ansible.module_utils.six.moves import cPickle, StringIO
|
||||
from ansible.module_utils.connection import Connection, ConnectionError, send_data, recv_data
|
||||
from ansible.module_utils.service import fork_process
|
||||
from ansible.playbook.play_context import PlayContext
|
||||
from ansible.plugins.loader import connection_loader
|
||||
from ansible.utils.path import unfrackpath, makedirs_safe
|
||||
from ansible.utils.display import Display
|
||||
from ansible.utils.jsonrpc import JsonRpcServer
|
||||
|
||||
|
||||
def read_stream(byte_stream):
|
||||
size = int(byte_stream.readline().strip())
|
||||
|
||||
data = byte_stream.read(size)
|
||||
if len(data) < size:
|
||||
raise Exception("EOF found before data was complete")
|
||||
|
||||
data_hash = to_text(byte_stream.readline().strip())
|
||||
if data_hash != hashlib.sha1(data).hexdigest():
|
||||
raise Exception("Read {0} bytes, but data did not match checksum".format(size))
|
||||
|
||||
# restore escaped loose \r characters
|
||||
data = data.replace(br'\r', b'\r')
|
||||
|
||||
return data
|
||||
|
||||
|
||||
@contextmanager
|
||||
def file_lock(lock_path):
|
||||
"""
|
||||
Uses contextmanager to create and release a file lock based on the
|
||||
given path. This allows us to create locks using `with file_lock()`
|
||||
to prevent deadlocks related to failure to unlock properly.
|
||||
"""
|
||||
|
||||
lock_fd = os.open(lock_path, os.O_RDWR | os.O_CREAT, 0o600)
|
||||
fcntl.lockf(lock_fd, fcntl.LOCK_EX)
|
||||
yield
|
||||
fcntl.lockf(lock_fd, fcntl.LOCK_UN)
|
||||
os.close(lock_fd)
|
||||
|
||||
|
||||
class ConnectionProcess(object):
|
||||
'''
|
||||
The connection process wraps around a Connection object that manages
|
||||
the connection to a remote device that persists over the playbook
|
||||
'''
|
||||
def __init__(self, fd, play_context, socket_path, original_path, ansible_playbook_pid=None):
|
||||
self.play_context = play_context
|
||||
self.socket_path = socket_path
|
||||
self.original_path = original_path
|
||||
|
||||
self.fd = fd
|
||||
self.exception = None
|
||||
|
||||
self.srv = JsonRpcServer()
|
||||
self.sock = None
|
||||
|
||||
self.connection = None
|
||||
self._ansible_playbook_pid = ansible_playbook_pid
|
||||
|
||||
def start(self, variables):
|
||||
try:
|
||||
messages = list()
|
||||
result = {}
|
||||
|
||||
messages.append('control socket path is %s' % self.socket_path)
|
||||
|
||||
# If this is a relative path (~ gets expanded later) then plug the
|
||||
# key's path on to the directory we originally came from, so we can
|
||||
# find it now that our cwd is /
|
||||
if self.play_context.private_key_file and self.play_context.private_key_file[0] not in '~/':
|
||||
self.play_context.private_key_file = os.path.join(self.original_path, self.play_context.private_key_file)
|
||||
self.connection = connection_loader.get(self.play_context.connection, self.play_context, '/dev/null',
|
||||
ansible_playbook_pid=self._ansible_playbook_pid)
|
||||
self.connection.set_options(var_options=variables)
|
||||
self.connection._connect()
|
||||
|
||||
self.connection._socket_path = self.socket_path
|
||||
self.srv.register(self.connection)
|
||||
messages.extend(sys.stdout.getvalue().splitlines())
|
||||
messages.append('connection to remote device started successfully')
|
||||
|
||||
self.sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
|
||||
self.sock.bind(self.socket_path)
|
||||
self.sock.listen(1)
|
||||
messages.append('local domain socket listeners started successfully')
|
||||
except Exception as exc:
|
||||
result['error'] = to_text(exc)
|
||||
result['exception'] = traceback.format_exc()
|
||||
finally:
|
||||
result['messages'] = messages
|
||||
self.fd.write(json.dumps(result))
|
||||
self.fd.close()
|
||||
|
||||
def run(self):
|
||||
try:
|
||||
while self.connection.connected:
|
||||
signal.signal(signal.SIGALRM, self.connect_timeout)
|
||||
signal.signal(signal.SIGTERM, self.handler)
|
||||
signal.alarm(self.connection.get_option('persistent_connect_timeout'))
|
||||
|
||||
self.exception = None
|
||||
(s, addr) = self.sock.accept()
|
||||
signal.alarm(0)
|
||||
|
||||
signal.signal(signal.SIGALRM, self.command_timeout)
|
||||
while True:
|
||||
data = recv_data(s)
|
||||
if not data:
|
||||
break
|
||||
|
||||
signal.alarm(self.connection.get_option('persistent_command_timeout'))
|
||||
resp = self.srv.handle_request(data)
|
||||
signal.alarm(0)
|
||||
|
||||
send_data(s, to_bytes(resp))
|
||||
|
||||
s.close()
|
||||
|
||||
except Exception as e:
|
||||
# socket.accept() will raise EINTR if the socket.close() is called
|
||||
if hasattr(e, 'errno'):
|
||||
if e.errno != errno.EINTR:
|
||||
self.exception = traceback.format_exc()
|
||||
else:
|
||||
self.exception = traceback.format_exc()
|
||||
|
||||
finally:
|
||||
# allow time for any exception msg send over socket to receive at other end before shutting down
|
||||
time.sleep(0.1)
|
||||
|
||||
# when done, close the connection properly and cleanup the socket file so it can be recreated
|
||||
self.shutdown()
|
||||
|
||||
def connect_timeout(self, signum, frame):
|
||||
msg = 'persistent connection idle timeout triggered, timeout value is %s secs.\nSee the timeout setting options in the Network Debug and ' \
|
||||
'Troubleshooting Guide.' % self.connection.get_option('persistent_connect_timeout')
|
||||
display.display(msg, log_only=True)
|
||||
raise Exception(msg)
|
||||
|
||||
def command_timeout(self, signum, frame):
|
||||
msg = 'command timeout triggered, timeout value is %s secs.\nSee the timeout setting options in the Network Debug and Troubleshooting Guide.'\
|
||||
% self.connection.get_option('persistent_command_timeout')
|
||||
display.display(msg, log_only=True)
|
||||
raise Exception(msg)
|
||||
|
||||
def handler(self, signum, frame):
|
||||
msg = 'signal handler called with signal %s.' % signum
|
||||
display.display(msg, log_only=True)
|
||||
raise Exception(msg)
|
||||
|
||||
def shutdown(self):
|
||||
""" Shuts down the local domain socket
|
||||
"""
|
||||
if os.path.exists(self.socket_path):
|
||||
try:
|
||||
if self.sock:
|
||||
self.sock.close()
|
||||
if self.connection:
|
||||
self.connection.close()
|
||||
except:
|
||||
pass
|
||||
finally:
|
||||
if os.path.exists(self.socket_path):
|
||||
os.remove(self.socket_path)
|
||||
setattr(self.connection, '_socket_path', None)
|
||||
setattr(self.connection, '_connected', False)
|
||||
display.display('shutdown complete', log_only=True)
|
||||
|
||||
|
||||
def main():
|
||||
""" Called to initiate the connect to the remote device
|
||||
"""
|
||||
rc = 0
|
||||
result = {}
|
||||
messages = list()
|
||||
socket_path = None
|
||||
|
||||
# Need stdin as a byte stream
|
||||
if PY3:
|
||||
stdin = sys.stdin.buffer
|
||||
else:
|
||||
stdin = sys.stdin
|
||||
|
||||
# Note: update the below log capture code after Display.display() is refactored.
|
||||
saved_stdout = sys.stdout
|
||||
sys.stdout = StringIO()
|
||||
|
||||
try:
|
||||
# read the play context data via stdin, which means depickling it
|
||||
vars_data = read_stream(stdin)
|
||||
init_data = read_stream(stdin)
|
||||
|
||||
if PY3:
|
||||
pc_data = cPickle.loads(init_data, encoding='bytes')
|
||||
variables = cPickle.loads(vars_data, encoding='bytes')
|
||||
else:
|
||||
pc_data = cPickle.loads(init_data)
|
||||
variables = cPickle.loads(vars_data)
|
||||
|
||||
play_context = PlayContext()
|
||||
play_context.deserialize(pc_data)
|
||||
display.verbosity = play_context.verbosity
|
||||
|
||||
except Exception as e:
|
||||
rc = 1
|
||||
result.update({
|
||||
'error': to_text(e),
|
||||
'exception': traceback.format_exc()
|
||||
})
|
||||
|
||||
if rc == 0:
|
||||
ssh = connection_loader.get('ssh', class_only=True)
|
||||
ansible_playbook_pid = sys.argv[1]
|
||||
cp = ssh._create_control_path(play_context.remote_addr, play_context.port, play_context.remote_user, play_context.connection, ansible_playbook_pid)
|
||||
|
||||
# create the persistent connection dir if need be and create the paths
|
||||
# which we will be using later
|
||||
tmp_path = unfrackpath(C.PERSISTENT_CONTROL_PATH_DIR)
|
||||
makedirs_safe(tmp_path)
|
||||
|
||||
lock_path = unfrackpath("%s/.ansible_pc_lock_%s" % (tmp_path, play_context.remote_addr))
|
||||
socket_path = unfrackpath(cp % dict(directory=tmp_path))
|
||||
|
||||
with file_lock(lock_path):
|
||||
if not os.path.exists(socket_path):
|
||||
messages.append('local domain socket does not exist, starting it')
|
||||
original_path = os.getcwd()
|
||||
r, w = os.pipe()
|
||||
pid = fork_process()
|
||||
|
||||
if pid == 0:
|
||||
try:
|
||||
os.close(r)
|
||||
wfd = os.fdopen(w, 'w')
|
||||
process = ConnectionProcess(wfd, play_context, socket_path, original_path, ansible_playbook_pid)
|
||||
process.start(variables)
|
||||
except Exception:
|
||||
messages.append(traceback.format_exc())
|
||||
rc = 1
|
||||
|
||||
if rc == 0:
|
||||
process.run()
|
||||
else:
|
||||
process.shutdown()
|
||||
|
||||
sys.exit(rc)
|
||||
|
||||
else:
|
||||
os.close(w)
|
||||
rfd = os.fdopen(r, 'r')
|
||||
data = json.loads(rfd.read())
|
||||
messages.extend(data.pop('messages'))
|
||||
result.update(data)
|
||||
|
||||
else:
|
||||
messages.append('found existing local domain socket, using it!')
|
||||
conn = Connection(socket_path)
|
||||
conn.set_options(var_options=variables)
|
||||
pc_data = to_text(init_data)
|
||||
try:
|
||||
messages.extend(conn.update_play_context(pc_data))
|
||||
except Exception as exc:
|
||||
# Only network_cli has update_play context, so missing this is
|
||||
# not fatal e.g. netconf
|
||||
if isinstance(exc, ConnectionError) and getattr(exc, 'code', None) == -32601:
|
||||
pass
|
||||
else:
|
||||
result.update({
|
||||
'error': to_text(exc),
|
||||
'exception': traceback.format_exc()
|
||||
})
|
||||
|
||||
messages.append(sys.stdout.getvalue())
|
||||
result.update({
|
||||
'messages': messages,
|
||||
'socket_path': socket_path
|
||||
})
|
||||
|
||||
sys.stdout = saved_stdout
|
||||
if 'exception' in result:
|
||||
rc = 1
|
||||
sys.stderr.write(json.dumps(result))
|
||||
else:
|
||||
rc = 0
|
||||
sys.stdout.write(json.dumps(result))
|
||||
|
||||
sys.exit(rc)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
display = Display()
|
||||
main()
|
||||
@ -1 +0,0 @@
|
||||
ansible
|
||||
@ -1 +0,0 @@
|
||||
ansible
|
||||
@ -1 +0,0 @@
|
||||
ansible
|
||||
@ -1 +0,0 @@
|
||||
ansible
|
||||
@ -1 +0,0 @@
|
||||
ansible
|
||||
168
bin/ansible-playbook
Executable file
168
bin/ansible-playbook
Executable file
@ -0,0 +1,168 @@
|
||||
#!/usr/bin/env python
|
||||
# (C) 2012, Michael DeHaan, <michael.dehaan@gmail.com>
|
||||
|
||||
# This file is part of Ansible
|
||||
#
|
||||
# Ansible is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Ansible is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
#######################################################
|
||||
|
||||
import os
|
||||
import sys
|
||||
import getpass
|
||||
|
||||
import ansible.playbook
|
||||
import ansible.constants as C
|
||||
from ansible import errors
|
||||
from ansible import callbacks
|
||||
from ansible import utils
|
||||
from ansible.color import ANSIBLE_COLOR, stringc
|
||||
|
||||
def colorize(lead, num, color):
|
||||
""" Print 'lead' = 'num' in 'color' """
|
||||
if num != 0 and ANSIBLE_COLOR:
|
||||
return "%s%s%-15s" % (stringc(lead, color), stringc("=", color), stringc(str(num), color))
|
||||
else:
|
||||
return "%s=%-4s" % (lead, str(num))
|
||||
|
||||
def hostcolor(host, stats):
|
||||
if ANSIBLE_COLOR:
|
||||
if stats['failures'] != 0 or stats['unreachable'] != 0:
|
||||
return "%-41s" % stringc(host, 'red')
|
||||
elif stats['changed'] != 0:
|
||||
return "%-41s" % stringc(host, 'yellow')
|
||||
else:
|
||||
return "%-41s" % stringc(host, 'green')
|
||||
return "%-30s" % host
|
||||
|
||||
|
||||
def main(args):
|
||||
''' run ansible-playbook operations '''
|
||||
|
||||
# create parser for CLI options
|
||||
usage = "%prog playbook.yml"
|
||||
parser = utils.base_parser(constants=C, usage=usage, connect_opts=True, runas_opts=True, subset_opts=True)
|
||||
parser.add_option('-e', '--extra-vars', dest="extra_vars", default=None,
|
||||
help="set additional key=value variables from the CLI")
|
||||
parser.add_option('-t', '--tags', dest='tags', default='all',
|
||||
help="only run plays and tasks tagged with these values")
|
||||
parser.add_option('--list-hosts', dest='listhosts', action='store_true',
|
||||
help="dump out a list of hosts, each play will run against, does not run playbook!")
|
||||
parser.add_option('--syntax-check', dest='syntax', action='store_true',
|
||||
help="do a playbook syntax check on the playbook, do not execute the playbook")
|
||||
|
||||
options, args = parser.parse_args(args)
|
||||
|
||||
if len(args) == 0:
|
||||
parser.print_help(file=sys.stderr)
|
||||
return 1
|
||||
|
||||
sshpass = None
|
||||
sudopass = None
|
||||
if not options.listhosts:
|
||||
if options.ask_pass:
|
||||
sshpass = getpass.getpass(prompt="SSH password: ")
|
||||
if options.ask_sudo_pass:
|
||||
sudopass = getpass.getpass(prompt="sudo password: ")
|
||||
options.sudo = True
|
||||
if options.sudo_user:
|
||||
options.sudo = True
|
||||
options.sudo_user = options.sudo_user or C.DEFAULT_SUDO_USER
|
||||
extra_vars = utils.parse_kv(options.extra_vars)
|
||||
only_tags = options.tags.split(",")
|
||||
|
||||
# run all playbooks specified on the command line
|
||||
for playbook in args:
|
||||
|
||||
stats = callbacks.AggregateStats()
|
||||
playbook_cb = callbacks.PlaybookCallbacks(verbose=utils.VERBOSITY)
|
||||
runner_cb = callbacks.PlaybookRunnerCallbacks(stats, verbose=utils.VERBOSITY)
|
||||
|
||||
pb = ansible.playbook.PlayBook(
|
||||
playbook=playbook,
|
||||
module_path=options.module_path,
|
||||
host_list=options.inventory,
|
||||
forks=options.forks,
|
||||
remote_user=options.remote_user,
|
||||
remote_pass=sshpass,
|
||||
callbacks=playbook_cb,
|
||||
runner_callbacks=runner_cb,
|
||||
stats=stats,
|
||||
timeout=options.timeout,
|
||||
transport=options.connection,
|
||||
sudo=options.sudo,
|
||||
sudo_user=options.sudo_user,
|
||||
sudo_pass=sudopass,
|
||||
extra_vars=extra_vars,
|
||||
private_key_file=options.private_key_file,
|
||||
only_tags=only_tags,
|
||||
subset=options.subset,
|
||||
)
|
||||
|
||||
if options.listhosts:
|
||||
playnum = 0
|
||||
for play in pb.playbook:
|
||||
playnum += 1
|
||||
if 'hosts' in play:
|
||||
label = 'unnamed'
|
||||
if 'name' in play:
|
||||
label = play['name']
|
||||
print 'hosts in play %s: %s' % (playnum, label)
|
||||
for host in pb.inventory.list_hosts(play['hosts']):
|
||||
print ' %s' % host
|
||||
print '\n'
|
||||
return 0
|
||||
|
||||
if options.syntax:
|
||||
# if we've not exited by now then we are fine.
|
||||
print 'Playbook Syntax is fine'
|
||||
return 0
|
||||
|
||||
|
||||
try:
|
||||
|
||||
pb.run()
|
||||
|
||||
hosts = sorted(pb.stats.processed.keys())
|
||||
print callbacks.banner("PLAY RECAP")
|
||||
playbook_cb.on_stats(pb.stats)
|
||||
for h in hosts:
|
||||
t = pb.stats.summarize(h)
|
||||
print "%-30s : %s %s %s %s " % (
|
||||
hostcolor(h, t),
|
||||
colorize('ok', t['ok'], 'green'),
|
||||
colorize('changed', t['changed'], 'yellow'),
|
||||
colorize('unreachable', t['unreachable'], 'red'),
|
||||
colorize('failed', t['failures'], 'red'))
|
||||
|
||||
print "\n"
|
||||
for h in hosts:
|
||||
stats = pb.stats.summarize(h)
|
||||
if stats['failures'] != 0 or stats['unreachable'] != 0:
|
||||
return 2
|
||||
|
||||
except errors.AnsibleError, e:
|
||||
print >>sys.stderr, "ERROR: %s" % e
|
||||
return 1
|
||||
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
try:
|
||||
sys.exit(main(sys.argv[1:]))
|
||||
except errors.AnsibleError, e:
|
||||
print >>sys.stderr, "ERROR: %s" % e
|
||||
sys.exit(1)
|
||||
|
||||
@ -1 +0,0 @@
|
||||
ansible
|
||||
148
bin/ansible-pull
Executable file
148
bin/ansible-pull
Executable file
@ -0,0 +1,148 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
# (c) 2012, Stephen Fromm <sfromm@gmail.com>
|
||||
#
|
||||
# Ansible is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Ansible is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
||||
# ansible-pull is a script that runs ansible in local mode
|
||||
# after checking out a playbooks directory from git. There is an
|
||||
# example playbook to bootstrap this script in the examples/ dir which
|
||||
# installs ansible and sets it up to run on cron.
|
||||
|
||||
# usage:
|
||||
# ansible-pull -d /var/lib/ansible \
|
||||
# -U http://example.net/content.git [-C production] \
|
||||
# [path/playbook.yml]
|
||||
#
|
||||
# the -d and -U arguments are required; the -C argument is optional.
|
||||
#
|
||||
# ansible-pull accepts an optional argument to specify a playbook
|
||||
# location underneath the workdir and then searches the git repo
|
||||
# for playbooks in the following order, stopping at the first match:
|
||||
#
|
||||
# 1. $workdir/path/playbook.yml, if specified
|
||||
# 2. $workdir/$hostname.yml
|
||||
# 3. $workdir/local.yml
|
||||
#
|
||||
# the git repo must contain at least one of these playbooks.
|
||||
|
||||
import os
|
||||
import shutil
|
||||
import subprocess
|
||||
import sys
|
||||
import datetime
|
||||
import socket
|
||||
from optparse import OptionParser
|
||||
|
||||
DEFAULT_PLAYBOOK = 'local.yml'
|
||||
PLAYBOOK_ERRORS = { 1: 'File does not exist',
|
||||
2: 'File is not readable' }
|
||||
|
||||
def _run(cmd):
|
||||
print >>sys.stderr, "Running: '%s'" % cmd
|
||||
cmd = subprocess.Popen(cmd, shell=True,
|
||||
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||
(out, err) = cmd.communicate()
|
||||
print out
|
||||
if cmd.returncode != 0:
|
||||
print >>sys.stderr, err
|
||||
return cmd.returncode
|
||||
|
||||
def try_playbook(path):
|
||||
if not os.path.exists(path):
|
||||
return 1
|
||||
if not os.access(path, os.R_OK):
|
||||
return 2
|
||||
return 0
|
||||
|
||||
def select_playbook(path, args):
|
||||
playbook = None
|
||||
if len(args) > 0 and args[0] is not None:
|
||||
playbook = "%s/%s" % (path, args[0])
|
||||
rc = try_playbook(playbook)
|
||||
if rc != 0:
|
||||
print >>sys.stderr, "%s: %s" % (playbook, PLAYBOOK_ERRORS[rc])
|
||||
return None
|
||||
return playbook
|
||||
else:
|
||||
hostpb = "%s/%s.yml" % (path, socket.getfqdn())
|
||||
localpb = "%s/%s" % (path, DEFAULT_PLAYBOOK)
|
||||
errors = []
|
||||
for pb in [hostpb, localpb]:
|
||||
rc = try_playbook(pb)
|
||||
if rc == 0:
|
||||
playbook = pb
|
||||
break
|
||||
else:
|
||||
errors.append("%s: %s" % (pb, PLAYBOOK_ERRORS[rc]))
|
||||
if playbook is None:
|
||||
print >>sys.stderr, "\n".join(errors)
|
||||
return playbook
|
||||
|
||||
def main(args):
|
||||
""" Set up and run a local playbook """
|
||||
usage = "%prog [options] [playbook.yml]"
|
||||
parser = OptionParser(usage=usage)
|
||||
parser.add_option('--purge', default=False, action='store_true',
|
||||
help='Purge git checkout after playbook run')
|
||||
parser.add_option('-d', '--directory', dest='dest', default=None,
|
||||
help='Directory to clone git repository to')
|
||||
parser.add_option('-U', '--url', dest='url', default=None,
|
||||
help='URL of git repository')
|
||||
parser.add_option('-C', '--checkout', dest='checkout',
|
||||
default="HEAD",
|
||||
help='Branch/Tag/Commit to checkout. Defaults to HEAD.')
|
||||
options, args = parser.parse_args(args)
|
||||
|
||||
if not options.dest:
|
||||
parser.error("Missing required directory argument")
|
||||
return 1
|
||||
|
||||
if not options.url:
|
||||
parser.error("URL for git repo not specified, use -h for help")
|
||||
return 1
|
||||
|
||||
now = datetime.datetime.now()
|
||||
print >>sys.stderr, now.strftime("Starting ansible-pull at %F %T")
|
||||
|
||||
git_opts = "repo=%s dest=%s version=%s" % (options.url, options.dest, options.checkout)
|
||||
cmd = 'ansible all -c local -m git -a "%s"' % git_opts
|
||||
rc = _run(cmd)
|
||||
if rc != 0:
|
||||
return rc
|
||||
|
||||
playbook = select_playbook(options.dest, args)
|
||||
|
||||
if playbook is None:
|
||||
print >>sys.stderr, "Could not find a playbook to run."
|
||||
return 1
|
||||
|
||||
cmd = 'ansible-playbook -c local %s' % playbook
|
||||
os.chdir(options.dest)
|
||||
rc = _run(cmd)
|
||||
|
||||
if options.purge:
|
||||
os.chdir('/')
|
||||
try:
|
||||
shutil.rmtree(options.dest)
|
||||
except Exception, e:
|
||||
print >>sys.stderr, "Failed to remove %s: %s" % (options.dest, str(e))
|
||||
|
||||
return rc
|
||||
|
||||
if __name__ == '__main__':
|
||||
try:
|
||||
sys.exit(main(sys.argv[1:]))
|
||||
except KeyboardInterrupt, e:
|
||||
print >>sys.stderr, "Exit on user request.\n"
|
||||
sys.exit(1)
|
||||
@ -1,15 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
# PYTHON_ARGCOMPLETE_OK
|
||||
"""Primary entry point for ansible-test."""
|
||||
|
||||
from __future__ import (absolute_import, division, print_function)
|
||||
|
||||
__metaclass__ = type
|
||||
|
||||
import os
|
||||
import sys
|
||||
|
||||
if __name__ == '__main__':
|
||||
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(os.path.dirname(__file__)), 'test', 'runner')))
|
||||
import lib.cli
|
||||
lib.cli.main()
|
||||
@ -1 +0,0 @@
|
||||
ansible
|
||||
@ -1,630 +0,0 @@
|
||||
releases:
|
||||
2.7.0:
|
||||
codename: In the Light
|
||||
fragments:
|
||||
- v2.7.0_summary.yaml
|
||||
release_date: '2018-10-03'
|
||||
2.7.0.a1:
|
||||
codename: In the Light
|
||||
fragments:
|
||||
- 32738-native-jinja-types.yaml
|
||||
- 42042-inventory_with_no_region.yaml
|
||||
- 42170-acme-backend-selection.yaml
|
||||
- 42647-win_updates.yaml
|
||||
- 42669-add_ssl_zabbix_inventory.yaml
|
||||
- 43024-nclu-empty-net-commands.yaml
|
||||
- 43931-strip-trailing-comments.yml
|
||||
- 44500-win_domain_computer.yaml
|
||||
- 44508-win_lineinfile.yaml
|
||||
- 44552-mail-py370-compat.yml
|
||||
- add_file_lock_feature.yaml
|
||||
- add_random_mac_filtter.yaml
|
||||
- admin-users-default-change.yaml
|
||||
- alternative_facts.yml
|
||||
- ansiballz_one_interpreter.yml
|
||||
- ansiballz_streamline_imports.yaml
|
||||
- any_unparsed_is_failed.yaml
|
||||
- authorized_key_symlinks.yaml
|
||||
- avoid_cwd_vars.yml
|
||||
- aws_caller_facts_add_account_alias.yaml
|
||||
- aws_core_is_boto3_error_code.yml
|
||||
- aws_rds_inventory_plugin_added.yaml
|
||||
- aws_s3_async_fix.yaml
|
||||
- aws_s3_decryption_fix.yaml
|
||||
- aws_s3_fix_custom_endpoints.yaml
|
||||
- basic_booleans_backward_compat.yaml
|
||||
- batch_mode_elasticsearch_plugin.yaml
|
||||
- callback_plugin_merge.yml
|
||||
- clarify_error_message.yml
|
||||
- cleanup__file__.yaml
|
||||
- command_shell_check_mode.yaml
|
||||
- connection_reset.yaml
|
||||
- console_color.yml
|
||||
- deepcopy-alternative.yaml
|
||||
- deprecated-__file__.yaml
|
||||
- docker-default-ssl.yml
|
||||
- drop-python-2.6-controller.yaml
|
||||
- ec2-facts.yaml
|
||||
- ec2_group_diff_mode_support.yml
|
||||
- elasticsearch_plugin-showSTDERRonFailure.yaml
|
||||
- elb_application_lb_fix_state_default.yml
|
||||
- ensure_text_source.yaml
|
||||
- env_inject.yml
|
||||
- file_attributes.yaml
|
||||
- file_touch_check_mode.yaml
|
||||
- file_touch_diff.yaml
|
||||
- fips_md5_import.yaml
|
||||
- fix-255-exit-code.yaml
|
||||
- fix-config-from-environment.yaml
|
||||
- fix-open-url.yml
|
||||
- fix-os_router.yaml
|
||||
- fix-selectors-error-condition.yaml
|
||||
- fix-swap-mount-module.yaml
|
||||
- fix-world-readable-skip-message.yaml
|
||||
- fix_no_log_loop.yml
|
||||
- flatten-better-type-check.yml
|
||||
- from_yaml_all_filter_plugin.yaml
|
||||
- galaxy_list_all_roles.yaml
|
||||
- gce-sort-fix.yaml
|
||||
- get_url.yaml
|
||||
- grafana_5_dashboard_compatible.yaml
|
||||
- hashing-changes.yaml
|
||||
- ignore_unreachable.yml
|
||||
- inventory_dir_ext_compare_fix.yaml
|
||||
- irc_py3_compat.yaml
|
||||
- lineinfile-empty-regexp.yml
|
||||
- lxd-idempotent-config.yaml
|
||||
- mass-remove-deprecated.yaml
|
||||
- missing_interpreter.yml
|
||||
- module_defaults_groups.yml
|
||||
- more-world-readable-warning-skips.yaml
|
||||
- no_log_fix_for_connection_exceptions.yaml
|
||||
- password_sanity_check.yml
|
||||
- passwordstore-lookup-backup.yaml
|
||||
- pause-stdout-redirection.yaml
|
||||
- pause-try-except-curses.yaml
|
||||
- preserve_delegate_nolog.yml
|
||||
- puppet_debugging_options.yaml
|
||||
- remote_tmp_de-escalated_user.yaml
|
||||
- remove-merge-multiple-tags.yaml
|
||||
- remove-simplejson.yaml
|
||||
- remove-unused-ansible-remote-temp.yaml
|
||||
- s3.yaml
|
||||
- service.yml
|
||||
- sns_topic_boto3_port.yaml
|
||||
- syslog_facility-for-journald.yml
|
||||
- template_output_encoding.yml
|
||||
- to-nice-json-separators.yaml
|
||||
- user-freebsd-createhome-name-fix.yaml
|
||||
- user-module-backup-shadow.yaml
|
||||
- user_freebsd_always_changed_bugfix.yaml
|
||||
- v2.7.0-initial-commit.yaml
|
||||
- v2.7.0a1_summary.yaml
|
||||
- vars_prompt-allow-prompting-for-play-vars.yaml
|
||||
- vault-errors.yaml
|
||||
- vultr_modules_renamed.yml
|
||||
- win_become_async_older_hosts.yml
|
||||
- win_chocoalatey_install_tls12.yml
|
||||
- win_chocolatey-bugfixes.yaml
|
||||
- win_chocolatey-return-rc-always.yml
|
||||
- win_domain-dns-typo-fix.yml
|
||||
- win_domain_controller-netlogon.yaml
|
||||
- win_iis_webapppool-output-fix.yml
|
||||
- win_privilege_util.yaml
|
||||
- win_reboot-fixes.yml
|
||||
- win_security_policy-empty-value.yaml
|
||||
- win_updates-async-fix.yml
|
||||
- win_user-validate-fixes.yaml
|
||||
- winrm_kinit-remove-pass-log.yml
|
||||
- wrcwd_ansible.cfg.yml
|
||||
- yum4_dnf_yum_action_plugin.yml
|
||||
- zypper-on-ubuntu.yaml
|
||||
modules:
|
||||
- aci_interface_policy_ospf
|
||||
- acme_account_facts
|
||||
- acme_certificate_revoke
|
||||
- acme_challenge_cert_helper
|
||||
- aws_eks_cluster
|
||||
- azure_rm_appgateway
|
||||
- azure_rm_appserviceplan
|
||||
- azure_rm_appserviceplan_facts
|
||||
- azure_rm_mysqldatabase_facts
|
||||
- azure_rm_mysqlserver_facts
|
||||
- azure_rm_postgresqldatabase_facts
|
||||
- azure_rm_postgresqlserver_facts
|
||||
- azure_rm_route
|
||||
- azure_rm_routetable
|
||||
- azure_rm_routetable_facts
|
||||
- azure_rm_virtualmachine_facts
|
||||
- azure_rm_webapp
|
||||
- bigip_appsvcs_extension
|
||||
- bigip_cli_alias
|
||||
- bigip_cli_script
|
||||
- bigip_device_auth
|
||||
- bigip_device_facts
|
||||
- bigip_firewall_dos_profile
|
||||
- bigip_firewall_policy
|
||||
- bigip_firewall_rule
|
||||
- bigip_firewall_rule_list
|
||||
- bigip_monitor_dns
|
||||
- bigip_profile_http
|
||||
- bigip_profile_http_compression
|
||||
- bigip_profile_oneconnect
|
||||
- bigip_profile_persistence_src_addr
|
||||
- bigip_remote_role
|
||||
- bigip_software_image
|
||||
- bigip_software_install
|
||||
- bigip_tunnel
|
||||
- bigiq_utility_license_assignment
|
||||
- certificate_complete_chain
|
||||
- cli_command
|
||||
- cli_config
|
||||
- cloudformation_stack_set
|
||||
- cobbler_sync
|
||||
- cobbler_system
|
||||
- cs_disk_offering
|
||||
- docker_swarm
|
||||
- docker_swarm_service
|
||||
- emc_vnx_sg_member
|
||||
- exos_config
|
||||
- exos_facts
|
||||
- gcp_compute_address_facts
|
||||
- gcp_compute_backend_bucket_facts
|
||||
- gcp_compute_backend_service_facts
|
||||
- gcp_compute_disk_facts
|
||||
- gcp_compute_firewall_facts
|
||||
- gcp_compute_forwarding_rule_facts
|
||||
- gcp_compute_global_address_facts
|
||||
- gcp_compute_global_forwarding_rule_facts
|
||||
- gcp_compute_health_check_facts
|
||||
- gcp_compute_http_health_check_facts
|
||||
- gcp_compute_https_health_check_facts
|
||||
- gcp_compute_image_facts
|
||||
- gcp_compute_instance_facts
|
||||
- gcp_compute_instance_group_facts
|
||||
- gcp_compute_instance_group_manager_facts
|
||||
- gcp_compute_instance_template_facts
|
||||
- gcp_compute_network_facts
|
||||
- gcp_compute_route_facts
|
||||
- gcp_compute_router_facts
|
||||
- gcp_compute_ssl_certificate_facts
|
||||
- gcp_compute_ssl_policy
|
||||
- gcp_compute_ssl_policy_facts
|
||||
- gcp_compute_subnetwork_facts
|
||||
- gcp_compute_target_http_proxy_facts
|
||||
- gcp_compute_target_https_proxy_facts
|
||||
- gcp_compute_target_pool_facts
|
||||
- gcp_compute_target_ssl_proxy_facts
|
||||
- gcp_compute_target_tcp_proxy_facts
|
||||
- gcp_compute_target_vpn_gateway
|
||||
- gcp_compute_target_vpn_gateway_facts
|
||||
- gcp_compute_url_map_facts
|
||||
- gcp_compute_vpn_tunnel
|
||||
- gcp_compute_vpn_tunnel_facts
|
||||
- ibm_sa_vol
|
||||
- ipa_config
|
||||
- ipa_vault
|
||||
- java_keystore
|
||||
- k8s_facts
|
||||
- meraki_config_template
|
||||
- meraki_device
|
||||
- meraki_mr_l3_firewall
|
||||
- meraki_mx_l3_firewall
|
||||
- meraki_ssid
|
||||
- meraki_switchport
|
||||
- meraki_vlan
|
||||
- na_elementsw_backup
|
||||
- na_elementsw_cluster_pair
|
||||
- na_elementsw_snapshot_schedule
|
||||
- na_elementsw_vlan
|
||||
- na_elementsw_volume
|
||||
- na_elementsw_volume_pair
|
||||
- na_ontap_cg_snapshot
|
||||
- na_ontap_dns
|
||||
- na_ontap_fcp
|
||||
- na_ontap_snapmirror
|
||||
- na_ontap_software_update
|
||||
- na_ontap_svm_options
|
||||
- na_ontap_vserver_peer
|
||||
- netcup_dns
|
||||
- nios_a_record
|
||||
- nios_cname_record
|
||||
- nios_mx_record
|
||||
- nios_naptr_record
|
||||
- nios_ptr_record
|
||||
- nios_srv_record
|
||||
- nios_txt_record
|
||||
- nos_command
|
||||
- nos_config
|
||||
- nos_facts
|
||||
- nxos_rpm
|
||||
- onyx_igmp
|
||||
- openssl_pkcs12
|
||||
- os_coe_cluster_template
|
||||
- os_listener
|
||||
- os_loadbalancer
|
||||
- os_member
|
||||
- os_pool
|
||||
- panos_set
|
||||
- python_requirements_facts
|
||||
- reboot
|
||||
- redfish_facts
|
||||
- routeros_command
|
||||
- scaleway_image_facts
|
||||
- scaleway_ip_facts
|
||||
- scaleway_organization_facts
|
||||
- scaleway_security_group_facts
|
||||
- scaleway_server_facts
|
||||
- scaleway_snapshot_facts
|
||||
- scaleway_volume
|
||||
- scaleway_volume_facts
|
||||
- slxos_lldp
|
||||
- tower_inventory_source
|
||||
- ucs_ntp_server
|
||||
- ucs_storage_profile
|
||||
- ucs_timezone
|
||||
- ucs_uuid_pool
|
||||
- vmware_about_facts
|
||||
- vmware_category
|
||||
- vmware_category_facts
|
||||
- vmware_deploy_ovf
|
||||
- vmware_guest_boot_facts
|
||||
- vmware_guest_boot_manager
|
||||
- vmware_guest_custom_attribute_defs
|
||||
- vmware_guest_custom_attributes
|
||||
- vmware_guest_move
|
||||
- vmware_host_ssl_facts
|
||||
- vmware_local_role_facts
|
||||
- voss_command
|
||||
- voss_facts
|
||||
- vultr_block_storage
|
||||
- vultr_block_storage_facts
|
||||
- vultr_dns_domain_facts
|
||||
- vultr_firewall_group_facts
|
||||
- vultr_network
|
||||
- vultr_network_facts
|
||||
- vultr_os_facts
|
||||
- vultr_plan_facts
|
||||
- vultr_region_facts
|
||||
- vultr_server_facts
|
||||
- vultr_ssh_key_facts
|
||||
- vultr_startup_script_facts
|
||||
- vultr_user_facts
|
||||
- win_chocolatey_config
|
||||
- win_chocolatey_feature
|
||||
- win_chocolatey_source
|
||||
- zabbix_host_facts
|
||||
plugins:
|
||||
callback:
|
||||
- counter_enabled
|
||||
- logdna
|
||||
- splunk
|
||||
connection:
|
||||
- psrp
|
||||
inventory:
|
||||
- tower
|
||||
lookup:
|
||||
- cpm_status
|
||||
- grafana_dashboard
|
||||
- nios_next_network
|
||||
release_date: '2018-08-27'
|
||||
2.7.0b1:
|
||||
codename: In the Light
|
||||
fragments:
|
||||
- blockdoc.yml
|
||||
- delegate-to-get-vars-no-task.yaml
|
||||
- gcp_service_account_home_path.yaml
|
||||
- include-apply-insert-order.yaml
|
||||
- include-double-handler.yaml
|
||||
- loop-cache-fix.yaml
|
||||
- no-dynamic-import-tasks.yaml
|
||||
- onepassword_unlock_vault.yaml
|
||||
- plugins-accept-only-valid-args.yaml
|
||||
- urls-if-modified-since.yaml
|
||||
- v2.7.0b1_summary.yaml
|
||||
- win_disk_image-mount-paths.yaml
|
||||
- win_psexec_command_arg.yaml
|
||||
- win_psexec_session-selection.yaml
|
||||
- win_uri-json.yml
|
||||
- win_wait_for-timeout.yaml
|
||||
modules:
|
||||
- azure_rm_autoscale
|
||||
- azure_rm_autoscale_facts
|
||||
- azure_rm_containerregistry_facts
|
||||
- azure_rm_sqlfirewallrule
|
||||
- azure_rm_trafficmanagerendpoint
|
||||
- azure_rm_trafficmanagerendpoint_facts
|
||||
- azure_rm_trafficmanagerprofile
|
||||
- azure_rm_trafficmanagerprofile_facts
|
||||
- azure_rm_webapp_facts
|
||||
- cpm_user
|
||||
- elb_target_facts
|
||||
- fmgr_provisioning
|
||||
- ftd_configuration
|
||||
- ftd_file_download
|
||||
- ftd_file_upload
|
||||
- gcp_compute_router
|
||||
- gcp_spanner_database
|
||||
- gcp_spanner_instance
|
||||
- gcp_sql_database
|
||||
- gcp_sql_instance
|
||||
- gcp_sql_user
|
||||
- ibm_sa_host
|
||||
- ibm_sa_pool
|
||||
- na_elementsw_access_group
|
||||
- na_elementsw_account
|
||||
- na_elementsw_admin_users
|
||||
- na_elementsw_check_connections
|
||||
- na_elementsw_cluster
|
||||
- na_elementsw_drive
|
||||
- na_elementsw_ldap
|
||||
- na_elementsw_network_interfaces
|
||||
- na_elementsw_node
|
||||
- na_elementsw_snapshot
|
||||
- na_elementsw_snapshot_restore
|
||||
- na_elementsw_volume_clone
|
||||
- na_ontap_autosupport
|
||||
- na_ontap_cluster_peer
|
||||
- na_ontap_command
|
||||
- na_ontap_disks
|
||||
- na_ontap_firewall_policy
|
||||
- na_ontap_gather_facts
|
||||
- na_ontap_motd
|
||||
- na_ontap_node
|
||||
- netapp_e_alerts
|
||||
- netapp_e_asup
|
||||
- netapp_e_auditlog
|
||||
- netapp_e_global
|
||||
- netapp_e_iscsi_interface
|
||||
- netapp_e_iscsi_target
|
||||
- netapp_e_ldap
|
||||
- netapp_e_mgmt_interface
|
||||
- netapp_e_syslog
|
||||
- onepassword_facts
|
||||
- opx_cps
|
||||
- purefb_facts
|
||||
- rds_instance
|
||||
- redfish_command
|
||||
- redfish_config
|
||||
- tower_credential_type
|
||||
- tower_settings
|
||||
- tower_workflow_template
|
||||
- vmware_host_ntp_facts
|
||||
- win_wait_for_process
|
||||
- win_xml
|
||||
plugins:
|
||||
lookup:
|
||||
- cpm_metering
|
||||
release_date: '2018-08-31'
|
||||
2.7.0rc1:
|
||||
codename: In the Light
|
||||
fragments:
|
||||
- 16748-docker_container-memory.yaml
|
||||
- 33579-docker_container-log_driver.yaml
|
||||
- 42380-docker_container-check-mode.yaml
|
||||
- 42641-44812-docker-env-variables.yaml
|
||||
- 42857-docker_container-working_dir.yaml
|
||||
- 44808-docker_container-idempotency.yaml
|
||||
- aws_bugfix_backports.yml
|
||||
- cb_fix_config.yml
|
||||
- dnf-group-removal.yaml
|
||||
- ec2_vpc_route_table_replace_route_fix.yaml
|
||||
- elb_target_group_fix_KeyError.yaml
|
||||
- systemd_user_dep_fixes.yml
|
||||
- terminal_plugin_nxos_iosxr.yaml
|
||||
- v2.7.0rc1_summary.yaml
|
||||
modules:
|
||||
- online_user_facts
|
||||
release_date: '2018-09-06'
|
||||
2.7.0rc2:
|
||||
codename: In the Light
|
||||
fragments:
|
||||
- 45501-get_url-better_checksums.yaml
|
||||
- aws_cloudfront_distribution_fix_nonexistent_method_name.yaml
|
||||
- azure-storage-cloud-environment.yaml
|
||||
- azure_autoscale.yaml
|
||||
- get-url-fix-idempotency.yaml
|
||||
- loop_undefined_delegate_to.yaml
|
||||
- nxos_ambiguous_command_check.yaml
|
||||
- script-module-no-file-path.yaml
|
||||
- v2.7.0rc2_summary.yaml
|
||||
- vmware_wait_for_task_fix.yaml
|
||||
- win_group_membership-com-marshal.yaml
|
||||
- win_say-fix.yaml
|
||||
plugins:
|
||||
strategy:
|
||||
- host_pinned
|
||||
release_date: '2018-09-13'
|
||||
2.7.0rc3:
|
||||
codename: In the Light
|
||||
fragments:
|
||||
- ec2_group_fix_target_containing_list_within_list.yaml
|
||||
- fix_nxos_facts_indefinite_hang.yaml
|
||||
- v2.7.0rc3_summary.yaml
|
||||
release_date: '2018-09-20'
|
||||
2.7.0rc4:
|
||||
codename: In the Light
|
||||
fragments:
|
||||
- v2.7.0rc4_summary.yaml
|
||||
release_date: '2018-09-27'
|
||||
2.7.1:
|
||||
codename: In the Light
|
||||
fragments:
|
||||
- 33156-vmware_guest-resource_pool.yaml
|
||||
- 34863-rabbitmq_user_unpack_fix.yaml
|
||||
- 35120-redis_inventory_plugin_flush_cache.yaml
|
||||
- 38679-vmware_guest-refactor_disk_logic.yml
|
||||
- 42322-nmcli_fix_vlan_mod_function.yaml
|
||||
- 42456-consul_kv-lookup.yaml
|
||||
- 43997-docker_network-inspect.yaml
|
||||
- 44755-win_nssm_fixes.yaml
|
||||
- 45226-vmware_wait_for_ip_address.yaml
|
||||
- 45417-ldap_entry-list_conversion.yml
|
||||
- 45508-parse-docker-service-parameter.yaml
|
||||
- 45543-rabbitmq_bindings-fix-quote.yaml
|
||||
- 45628-fetch_url-error-headers.yaml
|
||||
- 45700-docker_container-dont-parse-absent.yml
|
||||
- 45712-45753-vultr-timeout.yml
|
||||
- 45830-fixed-assigning-ssl-certificate.yaml
|
||||
- 45921-os_router-ignores-enable_snat-no.yml
|
||||
- 46049-route53-caa-ordering.txt
|
||||
- 46115-46035-cs_instance-fixes.yml
|
||||
- 46245-systemd-fix-service-enable-logic.yaml
|
||||
- 46322-docker_container-image-not-given.yaml
|
||||
- 46521-zabbix_host-fix-link-template-error.yml
|
||||
- 46594-docker_container-publish-all-ports.yml
|
||||
- 46595-docker_container-expected_ports.yml
|
||||
- 46743-fix-native-jinja-newlines.yaml
|
||||
- 46800-ec2_vol_facts-handle-missing-tags.yml
|
||||
- 46961_fix_aws_ec2_cache.yaml
|
||||
- 47046-docker-versions.yaml
|
||||
- 47096-junos-terminal-regex-fix.yml
|
||||
- 47109-fail-space-separated-string-pkgs.yaml
|
||||
- 47133-pamd_use_module_tmpdir.yml
|
||||
- 47281-pamd-dont-delete-named_temporary_file_on_close.yaml
|
||||
- 47296-docker_container-memory_swappiness.yaml
|
||||
- 47307-handler-include-task.yml
|
||||
- 47395-docker_container-ipvX_address.yaml
|
||||
- 47396-docker_container-detach-auto-remove.yaml
|
||||
- 54434-iam-role-arn-parsing.yml
|
||||
- ajson-nested-decode.yaml
|
||||
- ansible-connection-cleanup-when-failed.yaml
|
||||
- ansible-doc-fixes.yml
|
||||
- aws_parameter_store_pagination.yaml
|
||||
- azure-version.yaml
|
||||
- azure_rm_autoscale-fixed_date.yml
|
||||
- azure_rm_deployment_fix_45941.yaml
|
||||
- blockinfile-bytes-fix.yaml
|
||||
- callback_fixes.yml
|
||||
- cliconf-get-bugfixes.yaml
|
||||
- dd-put-empty-files.yaml
|
||||
- delegate_to_loop_hostvars.yaml
|
||||
- dnf-immutable-mutable.yaml
|
||||
- dnf-localgpgcheck.yaml
|
||||
- dnfyum-disable-excludes.yaml
|
||||
- docker_container-idempotency.yaml
|
||||
- docker_volume-force-change-detection.yaml
|
||||
- fix_calling_deprecate_with_correct_arguments.yaml
|
||||
- fix_ec2_group_target_vpc_precedence.yaml
|
||||
- fix_flatten.yml
|
||||
- fix_vyos_version.yaml
|
||||
- free-strategy-include-var-tags.yaml
|
||||
- ftd-http-api-plugin-refresh-token.yaml
|
||||
- get_url-remove-fragile-code.yaml
|
||||
- inv_fixes.yml
|
||||
- ios-prompt-fix.yaml
|
||||
- ip_netns-fix-exists.yaml
|
||||
- issue46937-pr46519-pr47449-fix-pip-multiple-extras.yaml
|
||||
- k8s_auth_kubeconfig.yml
|
||||
- k8s_facts_fix.yaml
|
||||
- lineinfile-insertbefore-index-out-of-range.yaml
|
||||
- mail-fix-regression.yaml
|
||||
- mysql-migrate_to_pymysql.yaml
|
||||
- netconf_config_comfirm_commit_fix.yaml
|
||||
- netconf_config_default_operation.yaml
|
||||
- netconf_module_utils_py3_fix.yaml
|
||||
- no-mutable-fieldattribute-defaults.yaml
|
||||
- no-overwrite-roles.yaml
|
||||
- nxos_file_copy_PY3_fix.yaml
|
||||
- nxos_ospf_vrf_idempotence.yaml
|
||||
- openssl-python3.yaml
|
||||
- ovirt_host_network_check_for_empty_user_opts.yaml
|
||||
- ovirt_vm__Fix_initialization_of_cloud_init.yaml
|
||||
- ovirt_vm_check_next_run_configuration_update_if_exist.yaml
|
||||
- ovirt_vm_fix_issue_in_SSO_option.yaml
|
||||
- ovirt_vm_fix_issue_in_setting_the_custom_compatibility_version_to_NULL.yaml
|
||||
- piped-transfer-empty-files.yaml
|
||||
- plugin-docs-list-fix.yaml
|
||||
- plugin-filters-cfg.yaml
|
||||
- postgresql_user-not-sup-error.yaml
|
||||
- psexec-handle-socket-errors.yaml
|
||||
- psexec-imp-error.yaml
|
||||
- psrp-utf8-stdio.yaml
|
||||
- psrp-utf8.yaml
|
||||
- reboot-unicode-string.yaml
|
||||
- reboot-var-fix-bare-linux.yaml
|
||||
- reboot_missing_parameter.yaml
|
||||
- reboot_openbsd_support.yaml
|
||||
- restore_sigpipe_dfl.yml
|
||||
- solaris-prtdiag-path.yaml
|
||||
- telent-prompt-fix.yaml
|
||||
- unsafe-set-wrap.yaml
|
||||
- user-do-not-pass-ssh_key_passphrase-on-cmdline.yaml
|
||||
- user-docs-underlying-tools.yaml
|
||||
- v2.7.1
|
||||
- win_copy-dest-quote.yaml
|
||||
- win_reboot-post-reboot-delay.yaml
|
||||
- winrm_pexpect.yaml
|
||||
- yum-proxy-userpass.yaml
|
||||
- yum_bugfux.yml
|
||||
- yum_bugfux_conf_file_none_type.yml
|
||||
release_date: '2018-10-25'
|
||||
2.7.2:
|
||||
codename: In the Light
|
||||
fragments:
|
||||
- 44324-ini_file-options-with-no-section-managed.yaml
|
||||
- 44988-acme-post-as-get.yaml
|
||||
- 45151-fix-os-exception.yaml
|
||||
- 45704-fix-redfish_facts-http-redirect.yaml
|
||||
- 46148-provide-redfish_facts-gathering-flexibility.yaml
|
||||
- 46658-plugin_filter-improve_error_handling.yaml
|
||||
- 46665-plugin_filter_doc_fix.yaml
|
||||
- 46700-vmware_doc-standalone_esxi.yaml
|
||||
- 47030-assert-add-success_msg-to-valid-args.yaml
|
||||
- 47117-vmware_doc-http_api_usage.yaml
|
||||
- 47300-ios-check_rc.yaml
|
||||
- 47313-vmware_utils-handle_requests_import_error.yaml
|
||||
- 47459_grafana_dashboard_consistency_fix.yaml
|
||||
- 47462-fix-redfish_config-idempotency.yaml
|
||||
- 47563-vmware_host-refactor_SSL_thumbprint.yaml
|
||||
- 47608-docker_swarm-advertise_addr.yml
|
||||
- 47621-bugfix-for-na-ontap-snapmirror.yaml
|
||||
- 47668-aci_switch_leaf_selector-support_empty_policy_group.yaml
|
||||
- 47689-yum-fix-version-syntax.yaml
|
||||
- 47693-fix-argument-spec-for-netapp-modules.yaml
|
||||
- 47695-pamd-fix-idempotence-and-parsing-issues.yml
|
||||
- 47711-docker_container-minimal-version-checks.yml
|
||||
- 47712-docker_container-detach-auto-remove.yml
|
||||
- 47722-vmware_guest_powerstate-restore_timeout.yaml
|
||||
- 47889-vmware_doc-fix_privilege_names.yaml
|
||||
- 47900-docker_container-paused.yml
|
||||
- 47920-vmware_guest-handle_no_root_snapshot.yaml
|
||||
- 47938-docker_swarm_service-requirements.yaml
|
||||
- 47997-docker_container-ipc-pid-mode.yml
|
||||
- 48009-ldap_attr-list.yml
|
||||
- 48036-vultr-fix-empty-list-handling.yaml
|
||||
- 48061-docker_container-auto_removal.yml
|
||||
- 48148_net_put_cleanup.yaml
|
||||
- 48317-do-not-auto-reboot-with-redfish_config-bios-changes
|
||||
- 48341-ebs-optimized-ec2-instance.yaml
|
||||
- 48342-vultr_server_facts-fix-firewall-group.yml
|
||||
- 48474-k8s-module-docs-update.yaml
|
||||
- 48536-docker_volume-labels.yml
|
||||
- 48551-docker_container-idempotency.yml
|
||||
- 48590-docker_container-unpause-stop.yml
|
||||
- aci_access_port_to_interface_policy_leaf_profile-missing_policy_group.yaml
|
||||
- aci_interface_policy_leaf_policy_group-missing_aep.yaml
|
||||
- django_manage_status.yaml
|
||||
- fix-password-lookup-on-fips.yaml
|
||||
- galaxy-metea-yaml-extension.yaml
|
||||
- loop-cache-include-apply.yml
|
||||
- lvg_fix_47301.yaml
|
||||
- nxos_evpn_vni_check_mode.yaml
|
||||
- nxos_facts_trailing_comma.yaml
|
||||
- nxos_install_os_force_disruptive.yaml
|
||||
- os_router_enable_snat_fix.yaml
|
||||
- ovirt_host_network_fix_type_conversion.yaml
|
||||
- ovirt_host_pm_bug_fixes_for_power_management.yaml
|
||||
- pip-fix-idempotence-in-check-mode.yaml
|
||||
- reboot-change-default-boot-command.yaml
|
||||
- remove_redundant_md5.yml
|
||||
- tls_mail.yml
|
||||
- uri-supports-async.yaml
|
||||
- user-fix-zero-negative-expiration.yaml
|
||||
- user-password_lock-change-fix.yaml
|
||||
- user-restore-disabled-account.yaml
|
||||
- v2.7.2_summary.yaml
|
||||
- win_uri-junk-data.yaml
|
||||
- yum-handle-obsoletes-check-update.yaml
|
||||
- yumdnf-autoremove.yaml
|
||||
release_date: '2018-11-15'
|
||||
@ -1,932 +0,0 @@
|
||||
========================================
|
||||
Ansible 2.7 "In the Light" Release Notes
|
||||
========================================
|
||||
|
||||
.. contents:: Topics
|
||||
|
||||
|
||||
v2.7.2
|
||||
======
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
| Release Date: 2018-11-15
|
||||
| `Porting Guide <https://docs.ansible.com/ansible/devel/porting_guides.html>`__
|
||||
|
||||
|
||||
Minor Changes
|
||||
-------------
|
||||
|
||||
- Fix documentation for cloning template.
|
||||
- Parsing plugin filter may raise TypeError, gracefully handle this exception and let user know about the syntax error in plugin filter file.
|
||||
- Scenario guide for VMware HTTP API usage.
|
||||
- Update plugin filter documentation.
|
||||
- fix yum and dnf autoremove input sanitization to properly warn user if invalid options passed and update documentation to match
|
||||
- improve readability and fix privileges names on vmware scenario_clone_template.
|
||||
- k8s - updated module documentation to mention how to avoid SSL validation errors
|
||||
- yum - when checking for updates, now properly include Obsoletes (both old and new) package data in the module JSON output, fixes https://github.com/ansible/ansible/issues/39978
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- ACME modules support `POST-as-GET <https://community.letsencrypt.org/t/acme-v2-scheduled-deprecation-of-unauthenticated-resource-gets/74380>`__ and will be able to access Let's Encrypt ACME v2 endpoint after November 1st, 2019.
|
||||
- Add force disruptive option nxos_instal_os module (https://github.com/ansible/ansible/pull/47694).
|
||||
- Avoid misleading PyVmomi error if requests import fails in vmware module utils.
|
||||
- Fix argument spec for NetApp modules that are using the old version
|
||||
- Fix consistency issue in grafana_dashboard module where the module would detect absence of 'dashboard' key on dashboard create but not dashboard update.
|
||||
- Fix idempotency issues when setting BIOS attributes via redfish_config module (https://github.com/ansible/ansible/pull/47462)
|
||||
- Fix issue getting output from failed ios commands when ``check_rc=False``
|
||||
- Fix issue with HTTP redirects with redfish_facts module (https://github.com/ansible/ansible/pull/45704)
|
||||
- Fix the password lookup when run from a FIPS enabled system. FIPS forbids the use of md5 but we can use sha1 instead. https://github.com/ansible/ansible/issues/47297
|
||||
- Fix trailing command in net_neighbors nxos_facts (https://github.com/ansible/ansible/pull/47548).
|
||||
- Fixed an issue where ``os_router`` would attempt to recreate router, because lack of ``enabled_snat`` parameter was treated as difference, if default Neutron policy for snat is set. (https://github.com/ansible/ansible/issues/29903)
|
||||
- Fixes issues with source and destination location for na_ontap_snapmirror
|
||||
- Handle exception when there is no snapshot available in virtual machine or template while cloning using vmware_guest.
|
||||
- Provides flexibility when retrieving redfish facts by not assuming that certains keys exist. Checks first if key exists before attempting to read from it.
|
||||
- Restore timeout in set_vm_power_state operation in vmware_guest_powerstate module.
|
||||
- aci_access_port_to_interface_policy_leaf_profile - Support missing policy_group
|
||||
- aci_interface_policy_leaf_policy_group - Support missing aep
|
||||
- aci_switch_leaf_selector - Support empty policy_group
|
||||
- ansible-galaxy - support yaml extension for meta file (https://github.com/ansible/ansible/pull/46505)
|
||||
- assert - add 'success_msg' to valid args (https://github.com/ansible/ansible/pull/47030)
|
||||
- delegate_to - Fix issue where delegate_to was upplied via ``apply`` on an include, where a loop was present on the include
|
||||
- django_manage - Changed the return type of the changed variable to bool.
|
||||
- docker_container - ``init`` and ``shm_size`` are now checked for idempotency.
|
||||
- docker_container - do not fail when removing a container which has ``auto_remove: yes``.
|
||||
- docker_container - fix ``ipc_mode`` and ``pid_mode`` idempotency if the ``host:<container-name>`` form is used (as opposed to ``host:<container-id>``).
|
||||
- docker_container - fix ``paused`` option (which never worked).
|
||||
- docker_container - fixing race condition when ``detach`` and ``auto_remove`` are both ``true``.
|
||||
- docker_container - refactored minimal docker-py/API version handling, and fixing such handling of some options.
|
||||
- docker_container - some docker versions require containers to be unpaused before stopping or removing. Adds check to do this when docker returns a corresponding error on stopping or removing.
|
||||
- docker_swarm - making ``advertise_addr`` optional, as it was already documented.
|
||||
- docker_swarm_service - The ``publish``.``mode`` parameter was being ignored if docker-py version was < 3.0.0. Added a parameter validation test.
|
||||
- docker_volume - ``labels`` now work (and are a ``dict`` and no longer a ``list``).
|
||||
- ec2_instance: - Fixed issue where ebs_optimized was considered sub-option of the network parameter. (https://github.com/ansible/ansible/issues/48159)
|
||||
- fix mail notification module when using starttls and py3.7
|
||||
- ini_file: Options within no sections aren't included, deleted or modified. These are just unmanged. This pull request solves this. (see https://github.com/ansible/ansible/pull/44324)
|
||||
- ldap_attr map to list (https://github.com/ansible/ansible/pull/48009)
|
||||
- lvg - fixed an idempotency regression in the lvg module (https://github.com/ansible/ansible/issues/47301)
|
||||
- net_put - fix when net_put module leaves temp files in some network OS cases e.g. routerOS
|
||||
- nxos_evpn_vni check_mode (https://github.com/ansible/ansible/pull/46612).
|
||||
- ovirt_host_network - Fix type conversion (https://github.com/ansible/ansible/pull/47617).
|
||||
- ovirt_host_pm - Bug fixes for power management (https://github.com/ansible/ansible/pull/47659).
|
||||
- pamd: fix state: args_present idempotence (see https://github.com/ansible/ansible/issues/47197)
|
||||
- pamd: fix state: updated idempotence (see https://github.com/ansible/ansible/issues/47083)
|
||||
- pamd: update regex to allow leading dash and retain EOF newline (see https://github.com/ansible/ansible/issues/47418)
|
||||
- pip - idempotence in check mode now works correctly.
|
||||
- reboot - change default reboot time command to prevent hanging on certain systems (https://github.com/ansible/ansible/issues/46562)
|
||||
- redfish_config - do not automatically reboot when scheduling a BIOS configuration job
|
||||
- remove rendundant path uniquifying in inventory plugins. This removes use of md5 hashing and fixes inventory plugins when run in FIPS mode.
|
||||
- replace renamed exceptions in multiple openstack modules
|
||||
- uri - Ensure the ``uri`` module supports async (https://github.com/ansible/ansible/issues/47660)
|
||||
- user - do not report changes every time when setting password_lock (https://github.com/ansible/ansible/issues/43670)
|
||||
- user - properly remove expiration when set to a negative value (https://github.com/ansible/ansible/issues/47114)
|
||||
- user - remove warning when creating a disabled account with '!' or '*' in the password field (https://github.com/ansible/ansible/issues/46334)
|
||||
- vmware_host - fixes the retry mechanism of AddHost task.
|
||||
- vultr - fixed the handling of an inconsistency in the response from Vultr API when it returns an unexpected empty list instead a empty dict.
|
||||
- vultr_server_facts - fixed facts gathering fails if firewall is enabled.
|
||||
- win_uri - stop junk output from being returned to Ansible - https://github.com/ansible/ansible/issues/47998
|
||||
- yum - fix "package == version" syntax (https://github.com/ansible/ansible/pull/47744)
|
||||
|
||||
v2.7.1
|
||||
======
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
| Release Date: 2018-10-25
|
||||
| `Porting Guide <https://docs.ansible.com/ansible/devel/porting_guides.html>`__
|
||||
|
||||
|
||||
Minor Changes
|
||||
-------------
|
||||
|
||||
- Fix yum module to properly check for empty conf_file value
|
||||
- added capability to set the scheme for the consul_kv lookup.
|
||||
- added optional certificate and certificate verification for consul_kv lookups
|
||||
- dnf - properly handle modifying the enable/disable excludes data field
|
||||
- dnf appropriately handles disable_excludes repoid argument
|
||||
- dnf properly honor disable_gpg_check for local (on local disk of remote node) package installation
|
||||
- fix yum module to handle list argument optional empty strings properly
|
||||
- netconf_config - Make default_operation optional in netconf_config module (https://github.com/ansible/ansible/pull/46333)
|
||||
- win_nssm - Drop support of literal YAML dictionnary for ``app_parameters`` option. Use the ``key=value;`` string form instead
|
||||
- yum - properly handle proxy password and username embedded in url
|
||||
- yum/dnf - fail when space separated string of names (https://github.com/ansible/ansible/pull/47109)
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Ansible JSON Decoder - Switch from decode to object_hook to support nested use of __ansible_vault and __ansible_unsafe (https://github.com/ansible/ansible/pull/45514)
|
||||
- Don't parse parameters and options when ``state`` is ``absent`` (https://github.com/ansible/ansible/pull/45700).
|
||||
- FieldAttribute - Do not use mutable defaults, instead allow supplying a callable for defaults of mutable types (https://github.com/ansible/ansible/issues/46824)
|
||||
- Fix an issue with the default telnet prompt handling. The value needs to be escaped otherwise it does not work when converted to bytes.
|
||||
- Fix calling deprecate with correct arguments (https://github.com/ansible/ansible/pull/46062).
|
||||
- Fix iterator to list conversion in ldap_entry module.
|
||||
- Fix nxos_ospf_vrf module auto-cost idempotency and module check mode (https://github.com/ansible/ansible/pull/47190).
|
||||
- Fix pip module so that it can recognize multiple extras
|
||||
- Fix prompt mismatch issue for ios (https://github.com/ansible/ansible/issues/47004)
|
||||
- Fix the issue with refreshing the token by storing Authorization header inside HttpApi connection plugin.
|
||||
- Fix the quoting of vhost and other names in rabbitmq_binding
|
||||
- Fix the win_reboot plugin so that the post_reboot_delay parameter is honored
|
||||
- Fixed an issue with ansible-doc -l failing when parsing some plugin documentation.
|
||||
- Fixed: Appropriate code to expand value was missing so assigning SSL certificate is not working as described in the documentation. https://github.com/ansible/ansible/pull/45830
|
||||
- Fixes an error that occurs when attempting to see if the netns already exists on the remote device. This change will now execute ``ip netns list`` and check if the desired namespace is in the output.
|
||||
- Give user better error messages and more information on verbose about inventory plugin behaviour
|
||||
- Hardware fact gathering now completes on Solaris 8. Previously, it aborted with error `Argument 'args' to run_command must be list or string`.
|
||||
- Ignore empty result of rabbitmqctl list_user_permissions.
|
||||
- In systemd module, allow scope to default to 'system'
|
||||
- In systemd module, fix check if a systemd+initd service is enabled - disabled in systemd means disabled
|
||||
- Only access EC2 volume tags when set
|
||||
- Only delete host key from redis in-memory cache if present.
|
||||
- PLUGIN_FILTERS_CFG - Ensure that the value is treated as type=path, and that we use the standard section of ``defaults`` instead of ``default`` (https://github.com/ansible/ansible/pull/45994)
|
||||
- Refactor virtual machine disk logic.
|
||||
- Restore SIGPIPE to SIG_DFL when creating subprocesses to avoid it being ignored under Python 2.
|
||||
- Rewrite get_resource_pool method for correct resource_pool selection.
|
||||
- The docker_* modules more uniformly check versions of docker-py/docker and (if necessary) the docker API.
|
||||
- Update callbacks to use Ansible's JSON encoder to avoid known serialization issues
|
||||
- Update the signatures of many cliconf plugins' get() methods to support the check_all paramter. Specifically, aireos, aruba, asa, ce, cnos, dellos6, dellos9, dellos10, edgeos, enos, exos, ironware, nos, onyx, routeros, slxos, and voss were updated. This fixes the cli_command module for these platforms
|
||||
- Vultr - fix for unreliable API behaviors resulting in timeouts (https://github.com/ansible/ansible/pull/45712/).
|
||||
- ansible-connection - Clean up socket files if playbook aborted before connection is started.
|
||||
- ansible-doc, removed local hardcoded listing, now uses the 'central' list from constants and other minor issues
|
||||
- aws_ec2 - fixed issue where cache did not contain the computed groups
|
||||
- aws_ssm_parameter_store - AWS Systems Manager Parameter Store may reach an internal limit before finding the expected parameter, causing misleading results. This is resolved by paginating the describe_parameters call.
|
||||
- azure_rm_deployment - fixed regression that prevents resource group from being created (https://github.com/ansible/ansible/issues/45941)
|
||||
- blockinfile - use bytes rather than a native string to prevent a stacktrace in Python 3 when writing to the file (https://github.com/ansible/ansible/issues/46237)
|
||||
- chroot connection - Support empty files with copying to target (https://github.com/ansible/ansible/issues/36725)
|
||||
- cs_instance - Fix docs and typo in examples (https://github.com/ansible/ansible/pull/46035).
|
||||
- cs_instance - Fix host migration without volume (https://github.com/ansible/ansible/pull/46115).
|
||||
- delegate_to - When templating ``delegate_to`` in a loop, don't use the task for a cache, return a special cache through ``get_vars`` allowing looping over a hostvar (https://github.com/ansible/ansible/issues/47207)
|
||||
- docker connection - Support empty files with copying to target (https://github.com/ansible/ansible/issues/36725)
|
||||
- docker_container - Fix idempotency problems with ``cap_drop`` and ``groups`` (when numeric group IDs were used).
|
||||
- docker_container - Fix type conversion errors for ``log_options``.
|
||||
- docker_container - Fixing various comparison/idempotency problems related to wrong comparisons. In particular, comparisons for ``command`` and ``entrypoint`` (both lists) no longer ignore missing elements during idempotency checks.
|
||||
- docker_container - Makes ``blkio_weight``, ``cpuset_mems``, ``dns_opts`` and ``uts`` options actually work.
|
||||
- docker_container - ``publish_ports: all`` was not used correctly when checking idempotency.
|
||||
- docker_container - fail if ``ipv4_address`` or ``ipv6_address`` is used with a too old docker-py version.
|
||||
- docker_container - fix ``memory_swappiness`` documentation.
|
||||
- docker_container - fix behavior of ``detach: yes`` if ``auto_remove: yes`` is specified.
|
||||
- docker_container - fix idempotency check for published_ports in some special cases.
|
||||
- docker_container - the behavior is improved in case ``image`` is not specified, but needed for (re-)creating the container.
|
||||
- docker_network - fixes idempotency issues (https://github.com/ansible/ansible/issues/33045) and name substring issue (https://github.com/ansible/ansible/issues/32926).
|
||||
- docker_service - correctly parse string values for the `scale` parameter https://github.com/ansible/ansible/pull/45508
|
||||
- docker_volume - fix ``force`` and change detection logic. If not both evaluated to ``True``, the volume was not recreated.
|
||||
- dynamic includes - Use the copied and merged task for calculating task vars in the free strategy (https://github.com/ansible/ansible/issues/47024)
|
||||
- ec2_group - There can be multiple security groups with the same name in different VPCs. Prior to 2.6 if a target group name was provided, the group matching the name and VPC had highest precedence. Restore this behavior by updated the dictionary with the groups matching the VPC last.
|
||||
- ec2_group - support EC2-Classic by not assuming security groups have VPCs.
|
||||
- ec2_metadata_facts - Parse IAM role name from metadata ARN instead of security credential field.
|
||||
- fetch_url did not always return lower-case header names in case of HTTP errors (https://github.com/ansible/ansible/pull/45628).
|
||||
- fix azure_rm_autoscale module can create a schedule with fixed start/end date (https://github.com/ansible/ansible/pull/47186)
|
||||
- fix flatten to properly handle multiple lists in lists https://github.com/ansible/ansible/issues/46343
|
||||
- get_url - improve code that parses checksums from a file so it is not fragile and reports a helpful error when no matching checksum is found
|
||||
- handlers - fix crash when handler task include tasks
|
||||
- jail connection - Support empty files with copying to target (https://github.com/ansible/ansible/issues/36725)
|
||||
- junos - fix terminal prompt regex (https://github.com/ansible/ansible/pull/47096)
|
||||
- k8s - allow kubeconfig or context to be set without the other
|
||||
- k8s_facts now returns a resources key in all situations
|
||||
- k8s_facts: fix handling of unknown resource types
|
||||
- kubectl connection - Support empty files with copying to target (https://github.com/ansible/ansible/issues/36725)
|
||||
- libvirt_lxc connection - Support empty files with copying to target (https://github.com/ansible/ansible/issues/36725)
|
||||
- lineinfile - fix index out of range error when using insertbefore on a file with only one line (https://github.com/ansible/ansible/issues/46043)
|
||||
- mail - Fix regression when sending mail without TLS/SSL
|
||||
- mysql_*, proxysql_* - PyMySQL (a pure-Python MySQL driver) is now a preferred dependency also supporting Python 3.X.
|
||||
- netconf_config - Fix in confirmed_commit capability in netconf_config modules (https://github.com/ansible/ansible/pull/46778)
|
||||
- netconf_config - Fix netconf module_utils dict changed size issue (https://github.com/ansible/ansible/pull/46778)
|
||||
- nmcli - fix syntax of vlan modification command (https://github.com/ansible/ansible/issues/42322)
|
||||
- nxos_file_copy fix for binary files (https://github.com/ansible/ansible/pull/46822).
|
||||
- openssl_csr - fix byte encoding issue on Python 3
|
||||
- openssl_pkcs12 - fix byte encoding issue on Python 3
|
||||
- os_router - ``enable_snat: no`` was ignored.
|
||||
- ovirt_host_network - check for empty user_opts (https://github.com/ansible/ansible/pull/47283).
|
||||
- ovirt_vm - Check next_run configuration update if exist (https://github.com/ansible/ansible/pull/47282/).
|
||||
- ovirt_vm - Fix initialization of cloud init (https://github.com/ansible/ansible/pull/47354).
|
||||
- ovirt_vm - Fix issue in SSO option (https://github.com/ansible/ansible/pull/47312).
|
||||
- ovirt_vm - Fix issue in setting the custom_compatibility_version to NULL (https://github.com/ansible/ansible/pull/47388).
|
||||
- pamd: add delete=False to NamedTemporaryFile() fixes OSError on module completion, and removes print statement from module code. (see https://github.com/ansible/ansible/pull/47281 and https://github.com/ansible/ansible/issues/47080)
|
||||
- pamd: use module.tmpdir for NamedTemporaryFile() (see https://github.com/ansible/ansible/pull/47133 and https://github.com/ansible/ansible/issues/36954)
|
||||
- postgresql_user - create pretty error message when creating a user without an encrypted password on newer PostgreSQL versions
|
||||
- psexec - Handle socket.error exceptions properly
|
||||
- psexec - give proper error message when the psexec requirements are not installed
|
||||
- psrp - Fix UTF-8 output - https://github.com/ansible/ansible/pull/46998
|
||||
- psrp - Fix issue when dealing with unicode values in the output for Python 2
|
||||
- reboot - add reboot_timeout parameter to the list of parameters so it can be used.
|
||||
- reboot - add support for OpenBSD
|
||||
- reboot - use correct syntax for fetching a value from a dict and account for bare Linux systems (https://github.com/ansible/ansible/pull/45607#issuecomment-422403177)
|
||||
- reboot - use unicode instead of bytes for stdout and stderr to match the type returned from low_level_execute()
|
||||
- roles - Ensure that we don't overwrite roles that have been registered (from imports) while parsing roles under the roles header (https://github.com/ansible/ansible/issues/47454)
|
||||
- route53 - fix CAA record ordering for idempotency.
|
||||
- ssh connection - Support empty files with piped transfer_method (https://github.com/ansible/ansible/issues/45426)
|
||||
- templar - Do not strip new lines in native jinja - https://github.com/ansible/ansible/issues/46743
|
||||
- unsafe - Add special casing to sets, to support wrapping elements of sets correctly in Python 3 (https://github.com/ansible/ansible/issues/47372)
|
||||
- use proper module_util to get Ansible version for Azure requests
|
||||
- user - add documentation on what underlying tools are used on each platform (https://github.com/ansible/ansible/issues/44266)
|
||||
- user module - do not pass ssh_key_passphrase on cmdline (CVE-2018-16837)
|
||||
- vmware - honor "wait_for_ip_address" when powering on a VM
|
||||
- vultr_server - fix diff for user data (https://github.com/ansible/ansible/pull/45753/).
|
||||
- vyos_facts - fix vyos_facts not returning version number issue (https://github.com/ansible/ansible/pull/39115)
|
||||
- win_copy - Fix issue where the dest return value would be enclosed in single quote when dest is a folder - https://github.com/ansible/ansible/issues/45281
|
||||
- win_nssm - Add missing space between parameters with ``app_parameters``
|
||||
- win_nssm - Correctly escape argument line when a parameter contains spaces, quotes or backslashes
|
||||
- win_nssm - Fix error when several services were given to the ``dependencies`` option
|
||||
- win_nssm - Fix extra space added in argument line with ``app_parameters`` or ``app_parameters_free_form`` when a parameter start by a dash and is followed by a period (https://github.com/ansible/ansible/issues/44079)
|
||||
- win_nssm - Fix service not started when ``state=started`` (https://github.com/ansible/ansible/issues/35442)
|
||||
- win_nssm - Fix several issues and idempotency problems (https://github.com/ansible/ansible/pull/44755)
|
||||
- winrm - Only use pexpect for auto kerb auth if it is installed and contains the required kwargs - https://github.com/ansible/ansible/issues/43462
|
||||
- zabbix_host - module was failing when zabbix host was updated with new interface and template depending on that interface at the same time
|
||||
- zone connection - Support empty files with copying to target (https://github.com/ansible/ansible/issues/36725)
|
||||
|
||||
v2.7.0
|
||||
======
|
||||
|
||||
Release Summary
|
||||
---------------
|
||||
|
||||
| Release Date: 2018-10-04
|
||||
| `Porting Guide <https://docs.ansible.com/ansible/devel/porting_guides.html>`__
|
||||
|
||||
|
||||
Major Changes
|
||||
-------------
|
||||
|
||||
- Allow config to enable native jinja types (https://github.com/ansible/ansible/pull/32738)
|
||||
- Extends `module_defaults` by adding a prefix to defaults `group/` which denotes a builtin or user-specified list of modules, such as `group/aws` or `group/gcp`
|
||||
- New keyword `ignore_unreachable` for plays and blocks. Allows ignoring tasks that fail due to unreachable hosts, and check results with `is unreachable` test.
|
||||
- New yumdnf module defines the shared argument specification for both yum and dnf modules and provides an entry point to share code when applicable
|
||||
- Remove support for simplejson (https://github.com/ansible/ansible/issues/42761)
|
||||
- Support for running an Ansible controller with Python-2.6 has been dropped. You can still manage machines which use Python-2.6 but you will have to manage them from a machine which has Python-2.7 or Python-3.5 or greater installed. See the `porting guide <https://docs.ansible.com/ansible/devel/porting_guides/porting_guide_2.7.html>`_ if you need more information.
|
||||
- new yum action plugin enables the yum module to work with both yum3 and dnf-based yum4 by detecting the backend package manager and routing commands through the correct Ansible module for that python API
|
||||
- yum and dnf modules now at feature parity
|
||||
|
||||
Minor Changes
|
||||
-------------
|
||||
|
||||
- ActionBase - removed deprecated _fixup_perms method (https://github.com/ansible/ansible/pull/44320)
|
||||
- Add `is_boto3_error_code` function to `module_utils/aws/core.py` to make it easier for modules to handle special AWS error codes.
|
||||
- Add use_backend to yum module/action plugin
|
||||
- Added PrivilegeUtil PowerShell module util to easily control Windows Privileges in a process
|
||||
- Added capability to skip ssl verification on zabbix host with dynamic inventory
|
||||
- Added inventory.any_unparsed_is_failed configuration setting. In an inventory with a static hosts file and (say) ec2.py, enabling this setting will cause a failure instead of a warning if ec2.py fails.
|
||||
- Added new filter to generate random MAC addresses from a given string acting as a prefix. Refer to the appropriate entry which has been added to user_guide playbook_filters.rst document.
|
||||
- Added the from_yaml_all filter to parse multi-document yaml strings. Refer to the appropriate entry which as been added to user_guide playbooks_filters.rst document.
|
||||
- Ansible-2.7 changes the Ansiballz strategy for running modules remotely so that invoking a module only needs to invoke python once per module on the remote machine instead of twice.
|
||||
- Better error handling for depsolve and transaction errors in DNF
|
||||
- Changed the prefix of all Vultr modules from vr to vultr (https://github.com/ansible/ansible/issues/42942).
|
||||
- Enable installroot tests for yum4(dnf) integration testing, dnf backend now supports that
|
||||
- Explicit encoding for the output of the template module, to be able to generate non-utf8 files from a utf-8 template. (https://github.com/ansible/proposals/issues/121)
|
||||
- File locking feature added, making it possible to gain exclusive access to given file through module_utils.common.file.FileLock (https://github.com/ansible/ansible/issues/29962)
|
||||
- Fix dnf handling of autoremove to be compatible with yum
|
||||
- Fix timer in exponential backoff algorithm in vmware.py.
|
||||
- Fixed group action idempotent transactions in dnf backend
|
||||
- Fixed group actions in check mode to report correct changed state
|
||||
- GCP Modules will do home path expansion on service account file paths
|
||||
- In Ansible-2.4 and above, Ansible passes the temporary directory a module should use to the module. This is done via a module parameter (_ansible_tmpdir). An earlier version of this which was also prototyped in Ansible-2.4 development used an environment variable, ANSIBLE_REMOTE_TMP to pass this information to the module instead. When we switched to using a module parameter, the environment variable was left in by mistake. Ansible-2.7 removes that variable. Any third party modules which relied on it should use the module parameter instead.
|
||||
- New config options `display_ok_hosts` and `display_failed_stderr` (along with the existing `display_skipped_hosts` option) allow more fine-grained control over the way that ansible displays output from a playbook (https://github.com/ansible/ansible/pull/41058)
|
||||
- Removed an unnecessary import from the AnsiballZ wrapper
|
||||
- Restore module_utils.basic.BOOLEANS variable for backwards compatibility with the module API in older ansible releases.
|
||||
- Setting file attributes (via the file module amongst others) now accepts + and - modifiers to add or remove individual attributes. (https://github.com/ansible/ansible/issues/33838)
|
||||
- Switch from zip to bc for certain package install/remove test cases in yum integration tests. The dnf depsolver downgrades python when you uninstall zip which alters the test environment and we have no control over that.
|
||||
- The acme_account and acme_certificate modules now support two backends: the Python cryptograpy module or the OpenSSL binary. By default, the modules detect if a new enough cryptography module is available and use it, with the OpenSSL binary being a fallback. If the detection fails for some reason, the OpenSSL binary backend can be explicitly selected by setting select_crypto_backend to openssl.
|
||||
- The apt, ec2_elb_lb, elb_classic_lb, and unarchive modules have been ported away from using __file__. This is futureproofing as__file__ won't work if we switch to using python -m to invoke modules in the future or if we figure out a way to make a module never touch disk for pipelining purposes.
|
||||
- The password_hash filter supports all parameters of passlib. This allows users to provide a rounds parameter. (https://github.com/ansible/ansible/issues/15326)
|
||||
- action plugins strictly accept valid parameters and report invalid parameters
|
||||
- allow user to customize default ansible-console prompt/msg default color
|
||||
- aws_caller_facts - The module now outputs the "account_alias" as well
|
||||
- aws_rds - Add new inventory plugin for RDS instances and clusters to match behavior in the ec2 inventory script.
|
||||
- command module - Add support for check mode when passing creates or removes arguments. (https://github.com/ansible/ansible/pull/40428)
|
||||
- dnf - group removal does not work if group was installed with Ansible because of dnf upstream bug https://bugzilla.redhat.com/show_bug.cgi?id=1620324
|
||||
- ec2_group - Add diff mode support with and without check mode. This feature is preview and may change when a common framework is adopted for AWS modules.
|
||||
- elasticsearch_plugin - Add the possibility to use the elasticsearch_plugin installation batch mode to install plugins with advanced privileges without user interaction.
|
||||
- gather_subset - removed deprecated functionality for using comma separated list with gather_subset (https://github.com/ansible/ansible/pull/44320)
|
||||
- get_url - implement [expend checksum format to <algorithm>:(<checksum>|<url>)] (https://github.com/ansible/ansible/issues/27617)
|
||||
- import_tasks - Do not allow import_tasks to transition to dynamic if the file is missing (https://github.com/ansible/ansible/issues/44822)
|
||||
- lineinfile - add warning when using an empty regexp (https://github.com/ansible/ansible/issues/29443)
|
||||
- onepassword/onepassword_raw - accept subdomain and vault_password to allow Ansible to unlock 1Password vaults
|
||||
- password_hash is not restricted to the subset provided by crypt.crypt (https://github.com/ansible/ansible/issues/17266)
|
||||
- passwordstore - Add backup option when overwriting password (off by default)
|
||||
- puppet - Add support for --debug, --verbose, --summarize https://github.com/ansible/ansible/issues/37986
|
||||
- puppet - Add support for setting logdest to both stdout and syslog via 'all'
|
||||
- replace copy.deepcopy in high workload areas with a custom function to improve performance (https://github.com/ansible/ansible/pull/44337)
|
||||
- roles - removed deprecated functionality for non YAML role specs (https://github.com/ansible/ansible/pull/44320)
|
||||
- roles - removed deprecated special casing functionality of connection, port, and remote_user for role params (https://github.com/ansible/ansible/pull/44320)
|
||||
- service - removed deprecated state=running (https://github.com/ansible/ansible/pull/44320)
|
||||
- shell module - Add support for check mode when passing creates or removes arguments. (https://github.com/ansible/ansible/pull/40428)
|
||||
- sns_topic - Port sns_topic module to boto3 and add an integration test suite.
|
||||
- ssh - reset connection will show a warning instead of failing for older OpenSSH versions
|
||||
- to_nice_json - specify separators to json.dumps to normalize the output between python2 and python3 (https://github.com/ansible/ansible/pull/42633)
|
||||
- user - backup shadow file on platforms where the module modifies it directly (https://github.com/ansible/ansible/issues/40696)
|
||||
- user module - add a sanity check for the user's password and a more helpful warning message (https://github.com/ansible/ansible/pull/43615)
|
||||
- vars_prompt - removed deprecated functionality supporting 'short form' for vars_prompt (https://github.com/ansible/ansible/pull/44320)
|
||||
- vault - removed deprecated functionality for insecure VaultAES class (https://github.com/ansible/ansible/pull/44320)
|
||||
- win_chocolatey - Add support for installing Chocolatey itself from a source feed
|
||||
- win_chocolatey - Add support for username and password on source feeds
|
||||
- win_chocolatey - Added ability to specify multiple packages as a list in 1 module invocation
|
||||
- win_chocolatey - Removed the need to manually escape double quotes in the proxy username and password
|
||||
- win_chocolatey - Will no longer upgrade Chocolatey in check mode
|
||||
- win_chocolatey - set the rc return value to always be returned, default to 0 https://github.com/ansible/ansible/issues/41758
|
||||
- win_disk_image - return a list of mount paths with the return value ``mount_paths``, this will always be a list and contain all mount points in an image
|
||||
- win_psexec - Added the ``session`` option to specify a session to start the process in
|
||||
- winrm - change the _reset() method to use reset() that is part of ConnectionBase
|
||||
|
||||
Deprecated Features
|
||||
-------------------
|
||||
|
||||
- Modules will no longer be able to rely on the __file__ attribute pointing to a real file. If your third party module is using __file__ for something it should be changed before 2.8. See the 2.7 porting guide for more information.
|
||||
- The `skippy`, `full_skip`, `actionable`, and `stderr` callback plugins have been deprecated in favor of config options that influence the behavior of the `default` callback plugin (https://github.com/ansible/ansible/pull/41058)
|
||||
- win_disk_image - the return value ``mount_path`` is deprecated and will be removed in 2.11, this can be accessed through ``mount_paths[0]`` instead.
|
||||
|
||||
Removed Features (previously deprecated)
|
||||
----------------------------------------
|
||||
|
||||
- The configuration toggle, ``merge_multiple_cli_tags``, has been removed. This setting controlled whether specifying ``--tags`` or ``--skip-tags`` multiple times on the commandline would merge the specified tags or use the old behaviour of overwriting the previous entry. The overwriting behaviour was deprecated in 2.3 and the default value of the config option became merge in 2.4.
|
||||
- ec2_facts - deprecated module removed (https://github.com/ansible/ansible/pull/44536)
|
||||
- s3 - deprecated module removed (https://github.com/ansible/ansible/pull/44537)
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- **Security Fix** - Some connection exceptions would cause no_log specified on a task to be ignored. If this happened, the task information, including any private information could have been displayed to stdout and (if enabled, not the default) logged to a log file specified in ansible.cfg's log_path. Additionally, sites which redirected stdout from ansible runs to a log file may have stored that private information onto disk that way as well. (https://github.com/ansible/ansible/pull/41414)
|
||||
- **Security Fix** - avoid loading host/group vars from cwd when not specifying a playbook or playbook base dir
|
||||
- **Security Fix** - avoid using ansible.cfg in a world writable dir.
|
||||
- Add ambiguous command check as the error message is not persistent on nexus devices (https://github.com/ansible/ansible/pull/45337).
|
||||
- Add argspec to aws_application_scaling_policy module to handle metric specifications, scaling cooldowns, and target values. https://github.com/ansible/ansible/pull/45235
|
||||
- Additional checks ensure that there is always a result of hashing passwords in the password_hash filter and vars_prompt, otherwise an error is returned. Some modules (like user module) interprets None as no password at all, which can be dangerous if the password given above is passed directly into those modules.
|
||||
- Allow arbitrary ``log_driver`` for docker_container (https://github.com/ansible/ansible/pull/33579).
|
||||
- Avoids deprecated functionality of passlib with newer library versions.
|
||||
- Changed the admin_users config option to not include "admin" by default as admin is frequently used for a non-privileged account (https://github.com/ansible/ansible/pull/41164)
|
||||
- Fix alt linux detection/matching
|
||||
- Fix an atomic_move error that is 'true', but misleading. Now we show all 3 files involved and clarify what happened.
|
||||
- Fix ec2_group support for multi-account and peered VPC security groups. Reported in https://github.com/ansible/ansible/issue/44788 and fixed in https://github.com/ansible/ansible/pull/45296
|
||||
- Fix ecs_taskdefinition handling of changed role_arn. If the task role in a ECS task definition changes ansible should create a new revsion of the task definition. https://github.com/ansible/ansible/pull/45317
|
||||
- Fix glob path of rc.d Some distribtuions like SUSE has the rc%.d directories under /etc/init.d
|
||||
- Fix health check parameter handling in elb_target_group per https://github.com/ansible/ansible/issues/43244 about health_check_port. Fixed in https://github.com/ansible/ansible/pull/45314
|
||||
- Fix lambda_policy updates when principal is an account number. Backport of https://github.com/ansible/ansible/pull/44871
|
||||
- Fix lxd module to be idempotent when the given configuration for the lxd container has not changed (https://github.com/ansible/ansible/pull/38166)
|
||||
- Fix python2.6 `nothing to repeat` nxos terminal plugin bug (https://github.com/ansible/ansible/pull/45271).
|
||||
- Fix s3_lifecycle module backwards compatibility without providing prefix. Blank prefixes regression was introduced in boto3 rewrite. https://github.com/ansible/ansible/pull/45318
|
||||
- Fix terminal plugin regex nxos, iosxr (https://github.com/ansible/ansible/pull/45135).
|
||||
- Fix the mount module's handling of swap entries in fstab (https://github.com/ansible/ansible/pull/42837)
|
||||
- Fixed an issue where ``ansible_facts.pkg_mgr`` would incorrectly set to ``zypper`` on Debian/Ubuntu systems that happened to have the command installed.
|
||||
- Fixed runtime module to be able to handle syslog_facility properly when python systemd module installed in a target system. (https://github.com/ansible/ansible/pull/41078)
|
||||
- Grafana dashboard module compatible with grafana 5 (https://github.com/ansible/ansible/pull/41249)
|
||||
- On Python2, loading config values from environment variables could lead to a traceback if there were nonascii characters present. Converted them to text strings so that no traceback will occur (https://github.com/ansible/ansible/pull/43468)
|
||||
- Remove spurious `changed=True` returns when ec2_group module is used with numeric ports. https://github.com/ansible/ansible/pull/45240
|
||||
- Support key names that contain spaces in ec2_metadata_facts module. https://github.com/ansible/ansible/pull/45313
|
||||
- The docker_* modules respect the DOCKER_* environment variables again (https://github.com/ansible/ansible/pull/42641).
|
||||
- The fix for `CVE-2018-10875 <https://access.redhat.com/security/cve/cve-2018-10875>`__ prints out a warning message about skipping a config file from a world writable current working directory. However, if the user explicitly specifies that the config file should be used via the ANSIBLE_CONFIG environment variable then Ansible would honor that but still print out the warning message. This has been fixed so that Ansible honors the user's explicit wishes and does not print a warning message in that circumstance.
|
||||
- The fix for `CVE-2018-10875 <https://access.redhat.com/security/cve/cve-2018-10875>`__ prints out a warning message about skipping a config file from a world writable current working directory. However, if the user is in a world writable current working directory which does not contain a config file, it should not print a warning message. This release fixes that extaneous warning.
|
||||
- The ssh connection plugin was categorizing all 255 exit statuses as an ssh error but modules can return exit code 255 as well. The connection plugin has now been changed to know that certain instances of exit code 255 are not ssh-related. (https://github.com/ansible/ansible/pull/41716)
|
||||
- allow custom endpoints to be used in the aws_s3 module (https://github.com/ansible/ansible/pull/36832)
|
||||
- allow gathering env exception to work even when injection is off
|
||||
- always correctly template no log for tasks https://github.com/ansible/ansible/issues/43294
|
||||
- ansible-galaxy - properly list all roles in roles_path (https://github.com/ansible/ansible/issues/43010)
|
||||
- authorized_key now have an option for following symlinks, default behaviour (False) can be changed by setting follow True/False
|
||||
- basic.py - catch ValueError in case a FIPS enabled platform raises this exception - https://github.com/ansible/ansible/issues/44447
|
||||
- become runas - changed runas process so it does not create a temporary file on the disk during execution
|
||||
- cloudfront_distribution - replace call to nonexistent method 'validate_distribution_id_from_caller_reference' with 'validate_distribution_from_caller_reference' and set the distribution_id variable to the distribution's 'Id' key.
|
||||
- corrected and clarified 'user' option deprecation in systemd module in favor of 'scope' option.
|
||||
- delegate_to - ensure if we get a non-Task object in _get_delegated_vars, we return early (https://github.com/ansible/ansible/pull/44934)
|
||||
- docker_container: fixing ``working_dir`` idempotency problem (https://github.com/ansible/ansible/pull/42857)
|
||||
- docker_container: makes unit parsing for memory sizes more consistent, and fixes idempotency problem when ``kernel_memory`` is set (see https://github.com/ansible/ansible/pull/16748 and https://github.com/ansible/ansible/issues/42692)
|
||||
- ec2_group - Sanitize the ingress and egress rules before operating on them by flattening any lists within lists describing the target CIDR(s) into a list of strings. Prior to Ansible 2.6 the ec2_group module accepted a list of strings, a list of lists, or a combination of strings and lists within a list. https://github.com/ansible/ansible/pull/45594
|
||||
- ec2_vpc_route_table - check the origin before replacing routes. Routes with the origin 'EnableVgwRoutePropagation' may not be replaced.
|
||||
- elasticsearch_plugin - Improve error messages and show stderr of elasticsearch commands
|
||||
- elb_application_lb - Fix a dangerous behavior of deleting an ELB if state was omitted from the task. Now state defaults to 'present', which is typical throughout AWS modules.
|
||||
- elb_target_group - cast target ports to integers before making API calls after the key 'Targets' is in params.
|
||||
- file module - The touch subcommand had its diff output broken during the 2.6.x development cycle. The patch to fix that broke check mode. This is now fixed (https://github.com/ansible/ansible/issues/42111)
|
||||
- file module - The touch subcommand had its diff output broken during the 2.6.x development cycle. This is now fixed (https://github.com/ansible/ansible/issues/41755)
|
||||
- fix async for the aws_s3 module by adding async support to the action plugin (https://github.com/ansible/ansible/pull/40826)
|
||||
- fix azure storage blob cannot create blob container in non-public azure cloud environment. (https://github.com/ansible/ansible/issues/35223)
|
||||
- fix azure_rm_autoscale module can use dict to identify target (https://github.com/ansible/ansible/pull/45477)
|
||||
- fix decrypting vault files for the aws_s3 module (https://github.com/ansible/ansible/pull/39634)
|
||||
- fix default SSL version for docker modules https://github.com/ansible/ansible/issues/42897
|
||||
- fix for the bundled selectors module (used in the ssh and local connection plugins) when a syscall is restarted after being interrupted by a signal (https://github.com/ansible/ansible/issues/41630)
|
||||
- fix mail module for python 3.7.0 (https://github.com/ansible/ansible/pull/44552)
|
||||
- fix nxos_facts indefinite hang for text based output (https://github.com/ansible/ansible/pull/45845).
|
||||
- fix the enable_snat parameter that is only supposed to be used by an user with the right policies. https://github.com/ansible/ansible/pull/44418
|
||||
- fix the remote tmp folder permissions issue when becoming a non admin user - https://github.com/ansible/ansible/issues/41340, https://github.com/ansible/ansible/issues/42117
|
||||
- fixed typo in config that prevented keys matching
|
||||
- fixes docker_container check and debug mode (https://github.com/ansible/ansible/pull/42380)
|
||||
- flatten filter - use better method of type checking allowing flattening of mutable and non-mutable sequences (https://github.com/ansible/ansible/pull/44331)
|
||||
- gce_net - Fix sorting of allowed ports (https://github.com/ansible/ansible/pull/41567)
|
||||
- get_url - Don't re-download files unnecessarily when force=no (https://github.com/ansible/ansible/issues/45491)
|
||||
- get_url - fix the bug that get_url does not change mode when checksum matches (https://github.com/ansible/ansible/issues/29614)
|
||||
- get_url - support remote checksum files with paths specified with leading dots (`./path/to/file`)
|
||||
- get_url / uri - Use custom rfc2822 date format function instead of locale specific strftime (https://github.com/ansible/ansible/issues/44857)
|
||||
- improved block docs
|
||||
- improves docker_container idempotency (https://github.com/ansible/ansible/pull/44808)
|
||||
- include - Change order of where the new block is inserted with apply so that apply args are not applied to the include also (https://github.com/ansible/ansible/pull/44912)
|
||||
- includes - ensure we do not double register handlers from includes to prevent exception (https://github.com/ansible/ansible/issues/44848)
|
||||
- inventory - When using an inventory directory, ensure extension comparison uses text types (https://github.com/ansible/ansible/pull/42475)
|
||||
- loop - Ensure that a loop with a when condition that evaluates to false and delegate_to, will short circuit if the loop references an undefined variable. This matches the behavior in the same scenario without delegate_to (https://github.com/ansible/ansible/issues/45189)
|
||||
- loop - Ensure we only cache the loop when the task had a loop and delegate_to was templated (https://github.com/ansible/ansible/issues/44874)
|
||||
- made irc module python3 compatible https://github.com/ansible/ansible/issues/42256
|
||||
- nclu - no longer runs net on empty lines in templates (https://github.com/ansible/ansible/pull/43024)
|
||||
- nicer message when we are missing interpreter
|
||||
- password_hash does not hard-code the salt-length, which fixes bcrypt in connection with passlib as bcrypt requires a salt with length 22.
|
||||
- pause - do not set stdout to raw mode when redirecting to a file (https://github.com/ansible/ansible/issues/41717)
|
||||
- pause - nest try except when importing curses to gracefully fail if curses is not present (https://github.com/ansible/ansible/issues/42004)
|
||||
- plugins/inventory/openstack.py - Do not create group with empty name if region is not set
|
||||
- preseve delegation info on nolog https://github.com/ansible/ansible/issues/42344
|
||||
- remove ambiguity when it comes to 'the source'
|
||||
- script inventory plugin - Don't pass file_name to DataLoader.load, which will prevent misleading error messages (https://github.com/ansible/ansible/issues/34164)
|
||||
- urls - Only assume GET method if data is empty, otherwise POST
|
||||
- user - Strip trailing comments in /etc/default/passwd (https://github.com/ansible/ansible/pull/43931)
|
||||
- user - fix bug that resulted in module always reporting a change when specifiying the home directory on FreeBSD (https://github.com/ansible/ansible/issues/42484)
|
||||
- user - use correct attribute name in FreeBSD for creat_home (https://github.com/ansible/ansible/pull/42711)
|
||||
- vars_prompt - properly template play level variables in vars_prompt (https://github.com/ansible/ansible/issues/37984)
|
||||
- vars_prompt with encrypt does not require passlib for the algorithms supported by crypt.
|
||||
- vault - fix error message encoding, and ensure we present a friendlier error when the EDITOR is missing (https://github.com/ansible/ansible/pull/44423)
|
||||
- win_chocolatey - enable TLSv1.2 support when downloading the Chocolatey installer https://github.com/ansible/ansible/issues/41906
|
||||
- win_chocolatey - fix issue where state=downgrade would upgrade a package if no version was set
|
||||
- win_domain - ensure the Netlogon service is up and running after promoting host to controller - https://github.com/ansible/ansible/issues/39235
|
||||
- win_domain - fixes typo in one of the AD cmdlets https://github.com/ansible/ansible/issues/41536
|
||||
- win_domain_computer - fixed deletion of computer active directory object that have dependent objects (https://github.com/ansible/ansible/pull/44500)
|
||||
- win_domain_controller - ensure the Netlogon service is up and running after promoting host to controller - https://github.com/ansible/ansible/issues/39235
|
||||
- win_group_membership - fix intermittent issue where it failed to convert the ADSI object to the .NET object after using it once
|
||||
- win_iis_webapppool - redirect some module output to null so Ansible can read the output JSON https://github.com/ansible/ansible/issues/40874
|
||||
- win_lineinfile - changed `-Path` to `-LiteralPath` so that square brackes in the path are interpreted literally - https://github.com/ansible/ansible/issues/44508
|
||||
- win_psexec - changed code to not escape the command option when building the args - https://github.com/ansible/ansible/issues/43839
|
||||
- win_reboot - fix for handling an already scheduled reboot and other minor log formatting issues
|
||||
- win_reboot - fix issue when overridding connection timeout hung the post reboot uptime check - https://github.com/ansible/ansible/issues/42185 https://github.com/ansible/ansible/issues/42294
|
||||
- win_reboot - handle post reboots when running test_command - https://github.com/ansible/ansible/issues/41713
|
||||
- win_say - fix syntax error in module and get tests working
|
||||
- win_security_policy - allows an empty string to reset a policy value https://github.com/ansible/ansible/issues/40869
|
||||
- win_updates - Fixed issue where running win_updates on async fails without any error
|
||||
- win_updates - fixed module return value is lost in error in some cases (https://github.com/ansible/ansible/pull/42647)
|
||||
- win_uri: Fix support for JSON output when charset is set
|
||||
- win_user - Use LogonUser to validate the password as it does not rely on SMB/RPC to be available https://github.com/ansible/ansible/issues/24884
|
||||
- win_wait_for - fix issue where timeout doesn't wait unless state=drained - https://github.com/ansible/ansible/issues/43446
|
||||
- winrm - ensure pexpect is set to not echo the input on a failure and have a manual sanity check afterwards https://github.com/ansible/ansible/issues/41865
|
||||
- winrm - running async with become on a Server 2008 or 2008 R2 host will now work
|
||||
|
||||
New Plugins
|
||||
-----------
|
||||
|
||||
Callback
|
||||
~~~~~~~~
|
||||
|
||||
- counter_enabled - adds counters to the output items (tasks and hosts/task)
|
||||
- logdna - Sends playbook logs to LogDNA
|
||||
- splunk - Sends task result events to Splunk HTTP Event Collector
|
||||
|
||||
Connection
|
||||
~~~~~~~~~~
|
||||
|
||||
- psrp - Run tasks over Microsoft PowerShell Remoting Protocol
|
||||
|
||||
Inventory
|
||||
~~~~~~~~~
|
||||
|
||||
- tower - Ansible dynamic inventory plugin for Ansible Tower.
|
||||
|
||||
Lookup
|
||||
~~~~~~
|
||||
|
||||
- cpm_metering - Get Power and Current data from WTI OOB/Combo and PDU devices
|
||||
- cpm_status - Get status and parameters from WTI OOB and PDU devices.
|
||||
- grafana_dashboard - list or search grafana dashboards
|
||||
- nios_next_network - Return the next available network range for a network-container
|
||||
|
||||
Strategy
|
||||
~~~~~~~~
|
||||
|
||||
- host_pinned - Executes tasks on each host without interruption
|
||||
|
||||
New Modules
|
||||
-----------
|
||||
|
||||
Cloud
|
||||
~~~~~
|
||||
|
||||
amazon
|
||||
^^^^^^
|
||||
|
||||
- aws_eks_cluster - Manage Elastic Kubernetes Service Clusters
|
||||
- cloudformation_stack_set - Manage groups of CloudFormation stacks
|
||||
- elb_target_facts - Gathers which target groups a target is associated with.
|
||||
- rds_instance - Manage RDS instances
|
||||
|
||||
azure
|
||||
^^^^^
|
||||
|
||||
- azure_rm_appgateway - Manage Application Gateway instance.
|
||||
- azure_rm_appserviceplan - Manage App Service Plan
|
||||
- azure_rm_appserviceplan_facts - Get azure app service plan facts.
|
||||
- azure_rm_autoscale - Manage Azure autoscale setting.
|
||||
- azure_rm_autoscale_facts - Get Azure Auto Scale Setting facts.
|
||||
- azure_rm_containerregistry_facts - Get Azure Container Registry facts.
|
||||
- azure_rm_mysqldatabase_facts - Get Azure MySQL Database facts.
|
||||
- azure_rm_mysqlserver_facts - Get Azure MySQL Server facts.
|
||||
- azure_rm_postgresqldatabase_facts - Get Azure PostgreSQL Database facts.
|
||||
- azure_rm_postgresqlserver_facts - Get Azure PostgreSQL Server facts.
|
||||
- azure_rm_route - Manage Azure route resource.
|
||||
- azure_rm_routetable - Manage Azure route table resource.
|
||||
- azure_rm_routetable_facts - Get route table facts.
|
||||
- azure_rm_sqlfirewallrule - Manage Firewall Rule instance.
|
||||
- azure_rm_trafficmanagerendpoint - Manage Azure Traffic Manager endpoint.
|
||||
- azure_rm_trafficmanagerendpoint_facts - Get Azure Traffic Manager endpoint facts
|
||||
- azure_rm_trafficmanagerprofile - Manage Azure Traffic Manager profile.
|
||||
- azure_rm_trafficmanagerprofile_facts - Get Azure Traffic Manager profile facts
|
||||
- azure_rm_virtualmachine_facts - Get virtual machine facts.
|
||||
- azure_rm_webapp - Manage Web App instance.
|
||||
- azure_rm_webapp_facts - Get azure web app facts.
|
||||
|
||||
cloudstack
|
||||
^^^^^^^^^^
|
||||
|
||||
- cs_disk_offering - Manages disk offerings on Apache CloudStack based clouds.
|
||||
|
||||
docker
|
||||
^^^^^^
|
||||
|
||||
- docker_swarm - Manage Swarm cluster
|
||||
- docker_swarm_service - docker swarm service
|
||||
|
||||
google
|
||||
^^^^^^
|
||||
|
||||
- gcp_compute_address_facts - Gather facts for GCP Address
|
||||
- gcp_compute_backend_bucket_facts - Gather facts for GCP BackendBucket
|
||||
- gcp_compute_backend_service_facts - Gather facts for GCP BackendService
|
||||
- gcp_compute_disk_facts - Gather facts for GCP Disk
|
||||
- gcp_compute_firewall_facts - Gather facts for GCP Firewall
|
||||
- gcp_compute_forwarding_rule_facts - Gather facts for GCP ForwardingRule
|
||||
- gcp_compute_global_address_facts - Gather facts for GCP GlobalAddress
|
||||
- gcp_compute_global_forwarding_rule_facts - Gather facts for GCP GlobalForwardingRule
|
||||
- gcp_compute_health_check_facts - Gather facts for GCP HealthCheck
|
||||
- gcp_compute_http_health_check_facts - Gather facts for GCP HttpHealthCheck
|
||||
- gcp_compute_https_health_check_facts - Gather facts for GCP HttpsHealthCheck
|
||||
- gcp_compute_image_facts - Gather facts for GCP Image
|
||||
- gcp_compute_instance_facts - Gather facts for GCP Instance
|
||||
- gcp_compute_instance_group_facts - Gather facts for GCP InstanceGroup
|
||||
- gcp_compute_instance_group_manager_facts - Gather facts for GCP InstanceGroupManager
|
||||
- gcp_compute_instance_template_facts - Gather facts for GCP InstanceTemplate
|
||||
- gcp_compute_network_facts - Gather facts for GCP Network
|
||||
- gcp_compute_route_facts - Gather facts for GCP Route
|
||||
- gcp_compute_router - Creates a GCP Router
|
||||
- gcp_compute_router_facts - Gather facts for GCP Router
|
||||
- gcp_compute_ssl_certificate_facts - Gather facts for GCP SslCertificate
|
||||
- gcp_compute_ssl_policy - Creates a GCP SslPolicy
|
||||
- gcp_compute_ssl_policy_facts - Gather facts for GCP SslPolicy
|
||||
- gcp_compute_subnetwork_facts - Gather facts for GCP Subnetwork
|
||||
- gcp_compute_target_http_proxy_facts - Gather facts for GCP TargetHttpProxy
|
||||
- gcp_compute_target_https_proxy_facts - Gather facts for GCP TargetHttpsProxy
|
||||
- gcp_compute_target_pool_facts - Gather facts for GCP TargetPool
|
||||
- gcp_compute_target_ssl_proxy_facts - Gather facts for GCP TargetSslProxy
|
||||
- gcp_compute_target_tcp_proxy_facts - Gather facts for GCP TargetTcpProxy
|
||||
- gcp_compute_target_vpn_gateway - Creates a GCP TargetVpnGateway
|
||||
- gcp_compute_target_vpn_gateway_facts - Gather facts for GCP TargetVpnGateway
|
||||
- gcp_compute_url_map_facts - Gather facts for GCP UrlMap
|
||||
- gcp_compute_vpn_tunnel - Creates a GCP VpnTunnel
|
||||
- gcp_compute_vpn_tunnel_facts - Gather facts for GCP VpnTunnel
|
||||
- gcp_spanner_database - Creates a GCP Database
|
||||
- gcp_spanner_instance - Creates a GCP Instance
|
||||
- gcp_sql_database - Creates a GCP Database
|
||||
- gcp_sql_instance - Creates a GCP Instance
|
||||
- gcp_sql_user - Creates a GCP User
|
||||
|
||||
online
|
||||
^^^^^^
|
||||
|
||||
- online_user_facts - Gather facts about Online user.
|
||||
|
||||
openstack
|
||||
^^^^^^^^^
|
||||
|
||||
- os_coe_cluster_template - Add/Remove COE cluster template from OpenStack Cloud
|
||||
- os_listener - Add/Delete a listener for a load balancer from OpenStack Cloud
|
||||
- os_loadbalancer - Add/Delete load balancer from OpenStack Cloud
|
||||
- os_member - Add/Delete a member for a pool in load balancer from OpenStack Cloud
|
||||
- os_pool - Add/Delete a pool in the load balancing service from OpenStack Cloud
|
||||
|
||||
scaleway
|
||||
^^^^^^^^
|
||||
|
||||
- scaleway_image_facts - Gather facts about the Scaleway images available.
|
||||
- scaleway_ip_facts - Gather facts about the Scaleway ips available.
|
||||
- scaleway_organization_facts - Gather facts about the Scaleway organizations available.
|
||||
- scaleway_security_group_facts - Gather facts about the Scaleway security groups available.
|
||||
- scaleway_server_facts - Gather facts about the Scaleway servers available.
|
||||
- scaleway_snapshot_facts - Gather facts about the Scaleway snapshots available.
|
||||
- scaleway_volume - Scaleway volumes management module
|
||||
- scaleway_volume_facts - Gather facts about the Scaleway volumes available.
|
||||
|
||||
vmware
|
||||
^^^^^^
|
||||
|
||||
- vmware_about_facts - Provides information about VMware server to which user is connecting to
|
||||
- vmware_category - Manage VMware categories
|
||||
- vmware_category_facts - Gather facts about VMware tag categories
|
||||
- vmware_deploy_ovf - Deploys a VMware virtual machine from an OVF or OVA file
|
||||
- vmware_guest_boot_facts - Gather facts about boot options for the given virtual machine
|
||||
- vmware_guest_boot_manager - Manage boot options for the given virtual machine
|
||||
- vmware_guest_custom_attribute_defs - Manage custom attributes definitions for virtual machine from VMWare
|
||||
- vmware_guest_custom_attributes - Manage custom attributes from VMWare for the given virtual machine
|
||||
- vmware_guest_move - Moves virtual machines in vCenter
|
||||
- vmware_host_ntp_facts - Gathers facts about NTP configuration on an ESXi host
|
||||
- vmware_host_ssl_facts - Gather facts of ESXi host system about SSL
|
||||
- vmware_local_role_facts - Gather facts about local roles on an ESXi host
|
||||
|
||||
vultr
|
||||
^^^^^
|
||||
|
||||
- vultr_block_storage - Manages block storage volumes on Vultr.
|
||||
- vultr_block_storage_facts - Gather facts about the Vultr block storage volumes available.
|
||||
- vultr_dns_domain_facts - Gather facts about the Vultr DNS domains available.
|
||||
- vultr_firewall_group_facts - Gather facts about the Vultr firewall groups available.
|
||||
- vultr_network - Manages networks on Vultr.
|
||||
- vultr_network_facts - Gather facts about the Vultr networks available.
|
||||
- vultr_os_facts - Gather facts about the Vultr OSes available.
|
||||
- vultr_plan_facts - Gather facts about the Vultr plans available.
|
||||
- vultr_region_facts - Gather facts about the Vultr regions available.
|
||||
- vultr_server_facts - Gather facts about the Vultr servers available.
|
||||
- vultr_ssh_key_facts - Gather facts about the Vultr SSH keys available.
|
||||
- vultr_startup_script_facts - Gather facts about the Vultr startup scripts available.
|
||||
- vultr_user_facts - Gather facts about the Vultr user available.
|
||||
|
||||
Clustering
|
||||
~~~~~~~~~~
|
||||
|
||||
k8s
|
||||
^^^
|
||||
|
||||
- k8s_facts - Describe Kubernetes (K8s) objects
|
||||
|
||||
Crypto
|
||||
~~~~~~
|
||||
|
||||
- certificate_complete_chain - Complete certificate chain given a set of untrusted and root certificates
|
||||
- openssl_pkcs12 - Generate OpenSSL PKCS#12 archive.
|
||||
|
||||
acme
|
||||
^^^^
|
||||
|
||||
- acme_account_facts - Retrieves information on ACME accounts
|
||||
- acme_certificate_revoke - Revoke certificates with the ACME protocol
|
||||
- acme_challenge_cert_helper - Prepare certificates required for ACME challenges such as C(tls-alpn-01)
|
||||
|
||||
Identity
|
||||
~~~~~~~~
|
||||
|
||||
- onepassword_facts - Fetch facts from 1Password items
|
||||
|
||||
ipa
|
||||
^^^
|
||||
|
||||
- ipa_config - Manage Global FreeIPA Configuration Settings
|
||||
- ipa_vault - Manage FreeIPA vaults
|
||||
|
||||
Monitoring
|
||||
~~~~~~~~~~
|
||||
|
||||
zabbix
|
||||
^^^^^^
|
||||
|
||||
- zabbix_host_facts - Gather facts about Zabbix host
|
||||
|
||||
Net Tools
|
||||
~~~~~~~~~
|
||||
|
||||
- netcup_dns - manage Netcup DNS records
|
||||
|
||||
nios
|
||||
^^^^
|
||||
|
||||
- nios_a_record - Configure Infoblox NIOS A records
|
||||
- nios_cname_record - Configure Infoblox NIOS CNAME records
|
||||
- nios_mx_record - Configure Infoblox NIOS MX records
|
||||
- nios_naptr_record - Configure Infoblox NIOS NAPTR records
|
||||
- nios_ptr_record - Configure Infoblox NIOS PTR records
|
||||
- nios_srv_record - Configure Infoblox NIOS SRV records
|
||||
- nios_txt_record - Configure Infoblox NIOS txt records
|
||||
|
||||
Network
|
||||
~~~~~~~
|
||||
|
||||
aci
|
||||
^^^
|
||||
|
||||
- aci_interface_policy_ospf - Manage OSPF interface policies (ospf:IfPol)
|
||||
|
||||
cli
|
||||
^^^
|
||||
|
||||
- cli_command - Run a cli command on cli-based network devices
|
||||
- cli_config - Push text based configuration to network devices over network_cli
|
||||
|
||||
exos
|
||||
^^^^
|
||||
|
||||
- exos_config - Manage Extreme Networks EXOS configuration sections
|
||||
- exos_facts - Collect facts from devices running Extreme EXOS
|
||||
|
||||
f5
|
||||
^^
|
||||
|
||||
- bigip_appsvcs_extension - Manage application service deployments
|
||||
- bigip_cli_alias - Manage CLI aliases on a BIG-IP
|
||||
- bigip_cli_script - Manage CLI scripts on a BIG-IP
|
||||
- bigip_device_auth - Manage system authentication on a BIG-IP
|
||||
- bigip_device_facts - Collect facts from F5 BIG-IP devices
|
||||
- bigip_firewall_dos_profile - Manage AFM DoS profiles on a BIG-IP
|
||||
- bigip_firewall_policy - Manage AFM security firewall policies on a BIG-IP
|
||||
- bigip_firewall_rule - Manage AFM Firewall rules
|
||||
- bigip_firewall_rule_list - Manage AFM security firewall policies on a BIG-IP
|
||||
- bigip_monitor_dns - Manage DNS monitors on a BIG-IP
|
||||
- bigip_profile_http - Manage HTTP profiles on a BIG-IP
|
||||
- bigip_profile_http_compression - Manage HTTP compression profiles on a BIG-IP
|
||||
- bigip_profile_oneconnect - Manage OneConnect profiles on a BIG-IP
|
||||
- bigip_profile_persistence_src_addr - Manage source address persistence profiles
|
||||
- bigip_remote_role - Manage remote roles on a BIG-IP
|
||||
- bigip_software_image - Manage software images on a BIG-IP
|
||||
- bigip_software_install - Install software images on a BIG-IP
|
||||
- bigip_tunnel - Manage tunnels on a BIG-IP
|
||||
- bigiq_utility_license_assignment - Manage utility license assignment on BIG-IPs from a BIG-IQ
|
||||
|
||||
fortimanager
|
||||
^^^^^^^^^^^^
|
||||
|
||||
- fmgr_provisioning - Provision devices via FortiMananger
|
||||
|
||||
ftd
|
||||
^^^
|
||||
|
||||
- ftd_configuration - Manages configuration on Cisco FTD devices over REST API
|
||||
- ftd_file_download - Downloads files from Cisco FTD devices over HTTP(S)
|
||||
- ftd_file_upload - Uploads files to Cisco FTD devices over HTTP(S)
|
||||
|
||||
meraki
|
||||
^^^^^^
|
||||
|
||||
- meraki_config_template - Manage configuration templates in the Meraki cloud
|
||||
- meraki_device - Manage devices in the Meraki cloud
|
||||
- meraki_mr_l3_firewall - Manage MR access point layer 3 firewalls in the Meraki cloud
|
||||
- meraki_mx_l3_firewall - Manage MX appliance layer 3 firewalls in the Meraki cloud
|
||||
- meraki_ssid - Manage wireless SSIDs in the Meraki cloud
|
||||
- meraki_switchport - Manage switchports on a switch in the Meraki cloud
|
||||
- meraki_vlan - Manage VLANs in the Meraki cloud
|
||||
|
||||
nos
|
||||
^^^
|
||||
|
||||
- nos_command - Run commands on remote devices running Extreme Networks NOS
|
||||
- nos_config - Manage Extreme Networks NOS configuration sections
|
||||
- nos_facts - Collect facts from devices running Extreme NOS
|
||||
|
||||
nxos
|
||||
^^^^
|
||||
|
||||
- nxos_rpm - Install patch or feature rpms on Cisco NX-OS devices.
|
||||
|
||||
onyx
|
||||
^^^^
|
||||
|
||||
- onyx_igmp - Configures IGMP globl parameters
|
||||
|
||||
opx
|
||||
^^^
|
||||
|
||||
- opx_cps - CPS operations on networking device running Openswitch (OPX)
|
||||
|
||||
panos
|
||||
^^^^^
|
||||
|
||||
- panos_set - Execute arbitrary commands on a PAN-OS device using XPath and element
|
||||
|
||||
routeros
|
||||
^^^^^^^^
|
||||
|
||||
- routeros_command - Run commands on remote devices running MikroTik RouterOS
|
||||
|
||||
slxos
|
||||
^^^^^
|
||||
|
||||
- slxos_lldp - Manage LLDP configuration on Extreme Networks SLX-OS network devices.
|
||||
|
||||
voss
|
||||
^^^^
|
||||
|
||||
- voss_command - Run commands on remote devices running Extreme VOSS
|
||||
- voss_facts - Collect facts from remote devices running Extreme VOSS
|
||||
|
||||
Remote Management
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
cobbler
|
||||
^^^^^^^
|
||||
|
||||
- cobbler_sync - Sync Cobbler
|
||||
- cobbler_system - Manage system objects in Cobbler
|
||||
|
||||
cpm
|
||||
^^^
|
||||
|
||||
- cpm_user - Get various status and parameters from WTI OOB and PDU devices
|
||||
|
||||
redfish
|
||||
^^^^^^^
|
||||
|
||||
- redfish_command - Manages Out-Of-Band controllers using Redfish APIs
|
||||
- redfish_config - Manages Out-Of-Band controllers using Redfish APIs
|
||||
- redfish_facts - Manages Out-Of-Band controllers using Redfish APIs
|
||||
|
||||
ucs
|
||||
^^^
|
||||
|
||||
- ucs_ntp_server - Configures NTP server on Cisco UCS Manager
|
||||
- ucs_storage_profile - Configures storage profiles on Cisco UCS Manager
|
||||
- ucs_timezone - Configures timezone on Cisco UCS Manager
|
||||
- ucs_uuid_pool - Configures server UUID pools on Cisco UCS Manager
|
||||
|
||||
Storage
|
||||
~~~~~~~
|
||||
|
||||
emc
|
||||
^^^
|
||||
|
||||
- emc_vnx_sg_member - Manage storage group member on EMC VNX
|
||||
|
||||
ibm
|
||||
^^^
|
||||
|
||||
- ibm_sa_host - Adds hosts to or removes them from IBM Spectrum Accelerate storage systems.
|
||||
- ibm_sa_pool - Handles pools on an IBM Spectrum Accelerate storage array.
|
||||
- ibm_sa_vol - Handle volumes on an IBM Spectrum Accelerate storage array
|
||||
|
||||
netapp
|
||||
^^^^^^
|
||||
|
||||
- na_elementsw_access_group - NetApp Element Software Manage Access Groups
|
||||
- na_elementsw_account - NetApp Element Software Manage Accounts
|
||||
- na_elementsw_admin_users - NetApp Element Software Manage Admin Users
|
||||
- na_elementsw_backup - NetApp Element Software Create Backups
|
||||
- na_elementsw_check_connections - NetApp Element Software Check connectivity to MVIP and SVIP.
|
||||
- na_elementsw_cluster - NetApp Element Software Create Cluster
|
||||
- na_elementsw_cluster_pair - NetApp Element Software Manage Cluster Pair
|
||||
- na_elementsw_drive - NetApp Element Software Manage Node Drives
|
||||
- na_elementsw_ldap - NetApp Element Software Manage ldap admin users
|
||||
- na_elementsw_network_interfaces - NetApp Element Software Configure Node Network Interfaces
|
||||
- na_elementsw_node - NetApp Element Software Node Operation
|
||||
- na_elementsw_snapshot - NetApp Element Software Manage Snapshots
|
||||
- na_elementsw_snapshot_restore - NetApp Element Software Restore Snapshot
|
||||
- na_elementsw_snapshot_schedule - NetApp Element Software Snapshot Schedules
|
||||
- na_elementsw_vlan - NetApp Element Software Manage VLAN
|
||||
- na_elementsw_volume - NetApp Element Software Manage Volumes
|
||||
- na_elementsw_volume_clone - NetApp Element Software Create Volume Clone
|
||||
- na_elementsw_volume_pair - NetApp Element Software Volume Pair
|
||||
- na_ontap_autosupport - NetApp ONTAP manage Autosupport
|
||||
- na_ontap_cg_snapshot - NetApp ONTAP manage consistency group snapshot
|
||||
- na_ontap_cluster_peer - NetApp ONTAP Manage Cluster peering
|
||||
- na_ontap_command - NetApp ONTAP Run any cli command
|
||||
- na_ontap_disks - NetApp ONTAP Assign disks to nodes
|
||||
- na_ontap_dns - NetApp ONTAP Create, delete, modify DNS servers.
|
||||
- na_ontap_fcp - NetApp ONTAP Start, Stop and Enable FCP services.
|
||||
- na_ontap_firewall_policy - NetApp ONTAP Manage a firewall policy
|
||||
- na_ontap_gather_facts - NetApp information gatherer
|
||||
- na_ontap_motd - Setup motd on cDOT
|
||||
- na_ontap_node - NetApp ONTAP Rename a node.
|
||||
- na_ontap_snapmirror - NetApp ONTAP Manage SnapMirror
|
||||
- na_ontap_software_update - NetApp ONTAP Update Software
|
||||
- na_ontap_svm_options - NetApp ONTAP Modify SVM Options
|
||||
- na_ontap_vserver_peer - NetApp ONTAP Vserver peering
|
||||
- netapp_e_alerts - NetApp E-Series manage email notification settings
|
||||
- netapp_e_asup - NetApp E-Series manage auto-support settings
|
||||
- netapp_e_auditlog - NetApp E-Series manage audit-log configuration
|
||||
- netapp_e_global - NetApp E-Series manage global settings configuration
|
||||
- netapp_e_iscsi_interface - NetApp E-Series manage iSCSI interface configuration
|
||||
- netapp_e_iscsi_target - NetApp E-Series manage iSCSI target configuration
|
||||
- netapp_e_ldap - NetApp E-Series manage LDAP integration to use for authentication
|
||||
- netapp_e_mgmt_interface - NetApp E-Series management interface configuration
|
||||
- netapp_e_syslog - NetApp E-Series manage syslog settings
|
||||
|
||||
purestorage
|
||||
^^^^^^^^^^^
|
||||
|
||||
- purefb_facts - Collect facts from Pure Storage FlashBlade
|
||||
|
||||
System
|
||||
~~~~~~
|
||||
|
||||
- java_keystore - Create or delete a Java keystore in JKS format.
|
||||
- python_requirements_facts - Show python path and assert dependency versions
|
||||
- reboot - Reboot a machine
|
||||
|
||||
Web Infrastructure
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
|
||||
ansible_tower
|
||||
^^^^^^^^^^^^^
|
||||
|
||||
- tower_credential_type - Create, update, or destroy custom Ansible Tower credential type.
|
||||
- tower_inventory_source - create, update, or destroy Ansible Tower inventory source.
|
||||
- tower_settings - Modify Ansible Tower settings.
|
||||
- tower_workflow_template - create, update, or destroy Ansible Tower workflow template.
|
||||
|
||||
Windows
|
||||
~~~~~~~
|
||||
|
||||
- win_chocolatey_config - Manages Chocolatey config settings
|
||||
- win_chocolatey_feature - Manages Chocolatey features
|
||||
- win_chocolatey_source - Manages Chocolatey sources
|
||||
- win_wait_for_process - Waits for a process to exist or not exist before continuing.
|
||||
- win_xml - Add XML fragment to an XML parent
|
||||
@ -1,6 +0,0 @@
|
||||
Placeholder changelog
|
||||
=====================
|
||||
|
||||
This file is a placeholder; a version-specific ``CHANGELOG-vX.Y.rst`` will be generated during releases from fragments
|
||||
under changelogs/fragments. On release branches once a release has been created, consult the branch's version-specific
|
||||
file for changes that have occurred in that branch.
|
||||
@ -1,13 +0,0 @@
|
||||
---
|
||||
release_tag_re: '(v(?:[\d.ab\-]|rc)+)'
|
||||
pre_release_tag_re: '(?P<pre_release>(?:[ab]|rc)+\d*)$'
|
||||
notesdir: fragments
|
||||
prelude_section_name: release_summary
|
||||
new_plugins_after_name: removed_features
|
||||
sections:
|
||||
- ['major_changes', 'Major Changes']
|
||||
- ['minor_changes', 'Minor Changes']
|
||||
- ['deprecated_features', 'Deprecated Features']
|
||||
- ['removed_features', 'Removed Features (previously deprecated)']
|
||||
- ['bugfixes', 'Bugfixes']
|
||||
- ['known_issues', 'Known Issues']
|
||||
@ -1,5 +0,0 @@
|
||||
bugfixes:
|
||||
- "docker_container: makes unit parsing for memory sizes more consistent, and
|
||||
fixes idempotency problem when ``kernel_memory`` is set (see
|
||||
https://github.com/ansible/ansible/pull/16748 and
|
||||
https://github.com/ansible/ansible/issues/42692)"
|
||||
@ -1,2 +0,0 @@
|
||||
major_changes:
|
||||
- Allow config to enable native jinja types (https://github.com/ansible/ansible/pull/32738)
|
||||
@ -1,2 +0,0 @@
|
||||
bugfixes:
|
||||
- Rewrite get_resource_pool method for correct resource_pool selection.
|
||||
@ -1,2 +0,0 @@
|
||||
bugfixes:
|
||||
- "Allow arbitrary ``log_driver`` for docker_container (https://github.com/ansible/ansible/pull/33579)."
|
||||
@ -1,2 +0,0 @@
|
||||
bugfixes:
|
||||
- Ignore empty result of rabbitmqctl list_user_permissions.
|
||||
@ -1,2 +0,0 @@
|
||||
bugfixes:
|
||||
- Only delete host key from redis in-memory cache if present.
|
||||
@ -1,2 +0,0 @@
|
||||
bugfixes:
|
||||
- Refactor virtual machine disk logic.
|
||||
@ -1,2 +0,0 @@
|
||||
bugfixes:
|
||||
- plugins/inventory/openstack.py - Do not create group with empty name if region is not set
|
||||
@ -1,8 +0,0 @@
|
||||
---
|
||||
minor_changes:
|
||||
- "The acme_account and acme_certificate modules now support two backends:
|
||||
the Python cryptograpy module or the OpenSSL binary. By default, the
|
||||
modules detect if a new enough cryptography module is available and
|
||||
use it, with the OpenSSL binary being a fallback. If the detection
|
||||
fails for some reason, the OpenSSL binary backend can be explicitly
|
||||
selected by setting select_crypto_backend to openssl."
|
||||
@ -1,2 +0,0 @@
|
||||
bugfixes:
|
||||
- "nmcli - fix syntax of vlan modification command (https://github.com/ansible/ansible/issues/42322)"
|
||||
@ -1,2 +0,0 @@
|
||||
bugfixes:
|
||||
- "fixes docker_container check and debug mode (https://github.com/ansible/ansible/pull/42380)"
|
||||
@ -1,3 +0,0 @@
|
||||
minor_changes:
|
||||
- added capability to set the scheme for the consul_kv lookup.
|
||||
- added optional certificate and certificate verification for consul_kv lookups
|
||||
@ -1,2 +0,0 @@
|
||||
bugfixes:
|
||||
- "The docker_* modules respect the DOCKER_* environment variables again (https://github.com/ansible/ansible/pull/42641)."
|
||||
@ -1,2 +0,0 @@
|
||||
bugfixes:
|
||||
- win_updates - fixed module return value is lost in error in some cases (https://github.com/ansible/ansible/pull/42647)
|
||||
@ -1,4 +0,0 @@
|
||||
---
|
||||
minor_changes:
|
||||
- Added capability to skip ssl verification
|
||||
on zabbix host with dynamic inventory
|
||||
@ -1,2 +0,0 @@
|
||||
bugfixes:
|
||||
- "docker_container: fixing ``working_dir`` idempotency problem (https://github.com/ansible/ansible/pull/42857)"
|
||||
@ -1,2 +0,0 @@
|
||||
bugfixes:
|
||||
- nclu - no longer runs net on empty lines in templates (https://github.com/ansible/ansible/pull/43024)
|
||||
@ -1,2 +0,0 @@
|
||||
bugfixes:
|
||||
- user - Strip trailing comments in /etc/default/passwd (https://github.com/ansible/ansible/pull/43931)
|
||||
@ -1,2 +0,0 @@
|
||||
bugfixes:
|
||||
- "docker_network - fixes idempotency issues (https://github.com/ansible/ansible/issues/33045) and name substring issue (https://github.com/ansible/ansible/issues/32926)."
|
||||
@ -1,4 +0,0 @@
|
||||
---
|
||||
bugfixes:
|
||||
- "ini_file: Options within no sections aren't included, deleted or modified. These are just unmanged. This pull request solves this.
|
||||
(see https://github.com/ansible/ansible/pull/44324)"
|
||||
@ -1,2 +0,0 @@
|
||||
bugfixes:
|
||||
- win_domain_computer - fixed deletion of computer active directory object that have dependent objects (https://github.com/ansible/ansible/pull/44500)
|
||||
@ -1,2 +0,0 @@
|
||||
bugfixes:
|
||||
- win_lineinfile - changed `-Path` to `-LiteralPath` so that square brackes in the path are interpreted literally - https://github.com/ansible/ansible/issues/44508
|
||||
@ -1,2 +0,0 @@
|
||||
bugfixes:
|
||||
- fix mail module for python 3.7.0 (https://github.com/ansible/ansible/pull/44552)
|
||||
@ -1,10 +0,0 @@
|
||||
bugfixes:
|
||||
- win_nssm - Fix several issues and idempotency problems (https://github.com/ansible/ansible/pull/44755)
|
||||
- win_nssm - Fix service not started when ``state=started`` (https://github.com/ansible/ansible/issues/35442)
|
||||
- win_nssm - Correctly escape argument line when a parameter contains spaces, quotes or backslashes
|
||||
- win_nssm - Add missing space between parameters with ``app_parameters``
|
||||
- win_nssm - Fix extra space added in argument line with ``app_parameters`` or ``app_parameters_free_form`` when a parameter start by a dash and is followed by a period (https://github.com/ansible/ansible/issues/44079)
|
||||
- win_nssm - Fix error when several services were given to the ``dependencies`` option
|
||||
|
||||
minor_changes:
|
||||
- win_nssm - Drop support of literal YAML dictionnary for ``app_parameters`` option. Use the ``key=value;`` string form instead
|
||||
@ -1,2 +0,0 @@
|
||||
bugfixes:
|
||||
- "improves docker_container idempotency (https://github.com/ansible/ansible/pull/44808)"
|
||||
@ -1,2 +0,0 @@
|
||||
bugfixes:
|
||||
- "ACME modules support `POST-as-GET <https://community.letsencrypt.org/t/acme-v2-scheduled-deprecation-of-unauthenticated-resource-gets/74380>`__ and will be able to access Let's Encrypt ACME v2 endpoint after November 1st, 2019."
|
||||
@ -1,2 +0,0 @@
|
||||
bugfixes:
|
||||
- replace renamed exceptions in multiple openstack modules
|
||||
@ -1,2 +0,0 @@
|
||||
bugfixes:
|
||||
- vmware - honor "wait_for_ip_address" when powering on a VM
|
||||
@ -1,2 +0,0 @@
|
||||
bugfixes:
|
||||
- Fix iterator to list conversion in ldap_entry module.
|
||||
@ -1,2 +0,0 @@
|
||||
bugfixes:
|
||||
- get_url - support remote checksum files with paths specified with leading dots (`./path/to/file`)
|
||||
@ -1,2 +0,0 @@
|
||||
bugfixes:
|
||||
- docker_service - correctly parse string values for the `scale` parameter https://github.com/ansible/ansible/pull/45508
|
||||
@ -1,2 +0,0 @@
|
||||
bugfixes:
|
||||
- Fix the quoting of vhost and other names in rabbitmq_binding
|
||||
@ -1,2 +0,0 @@
|
||||
bugfixes:
|
||||
- "fetch_url did not always return lower-case header names in case of HTTP errors (https://github.com/ansible/ansible/pull/45628)."
|
||||
@ -1,2 +0,0 @@
|
||||
bugfixes:
|
||||
- "Don't parse parameters and options when ``state`` is ``absent`` (https://github.com/ansible/ansible/pull/45700)."
|
||||
@ -1,2 +0,0 @@
|
||||
bugfixes:
|
||||
- "Fix issue with HTTP redirects with redfish_facts module (https://github.com/ansible/ansible/pull/45704)"
|
||||
@ -1,3 +0,0 @@
|
||||
bugfixes:
|
||||
- Vultr - fix for unreliable API behaviors resulting in timeouts (https://github.com/ansible/ansible/pull/45712/).
|
||||
- vultr_server - fix diff for user data (https://github.com/ansible/ansible/pull/45753/).
|
||||
@ -1,4 +0,0 @@
|
||||
bugfixes:
|
||||
- "Fixed: Appropriate code to expand value was missing so assigning SSL
|
||||
certificate is not working as described in the documentation.
|
||||
https://github.com/ansible/ansible/pull/45830"
|
||||
@ -1,2 +0,0 @@
|
||||
bugfixes:
|
||||
- "os_router - ``enable_snat: no`` was ignored."
|
||||
@ -1,2 +0,0 @@
|
||||
bugfixes:
|
||||
- "route53 - fix CAA record ordering for idempotency."
|
||||
@ -1,3 +0,0 @@
|
||||
bugfixes:
|
||||
- cs_instance - Fix host migration without volume (https://github.com/ansible/ansible/pull/46115).
|
||||
- cs_instance - Fix docs and typo in examples (https://github.com/ansible/ansible/pull/46035).
|
||||
@ -1,2 +0,0 @@
|
||||
bugfixes:
|
||||
- "Provides flexibility when retrieving redfish facts by not assuming that certains keys exist. Checks first if key exists before attempting to read from it."
|
||||
@ -1,3 +0,0 @@
|
||||
bugfixes:
|
||||
- In systemd module, allow scope to default to 'system'
|
||||
- In systemd module, fix check if a systemd+initd service is enabled - disabled in systemd means disabled
|
||||
@ -1,2 +0,0 @@
|
||||
bugfixes:
|
||||
- "docker_container - the behavior is improved in case ``image`` is not specified, but needed for (re-)creating the container."
|
||||
@ -1,2 +0,0 @@
|
||||
bugfixes:
|
||||
- "zabbix_host - module was failing when zabbix host was updated with new interface and template depending on that interface at the same time"
|
||||
@ -1,2 +0,0 @@
|
||||
bugfixes:
|
||||
- "docker_container - ``publish_ports: all`` was not used correctly when checking idempotency."
|
||||
@ -1,2 +0,0 @@
|
||||
bugfixes:
|
||||
- "docker_container - fix idempotency check for published_ports in some special cases."
|
||||
@ -1,2 +0,0 @@
|
||||
minor_changes:
|
||||
- Parsing plugin filter may raise TypeError, gracefully handle this exception and let user know about the syntax error in plugin filter file.
|
||||
@ -1,2 +0,0 @@
|
||||
minor_changes:
|
||||
- Update plugin filter documentation.
|
||||
@ -1,2 +0,0 @@
|
||||
minor_changes:
|
||||
- Fix documentation for cloning template.
|
||||
@ -1,2 +0,0 @@
|
||||
bugfixes:
|
||||
- templar - Do not strip new lines in native jinja - https://github.com/ansible/ansible/issues/46743
|
||||
@ -1,3 +0,0 @@
|
||||
---
|
||||
bugfixes:
|
||||
- Only access EC2 volume tags when set
|
||||
@ -1,2 +0,0 @@
|
||||
bugfixes:
|
||||
- aws_ec2 - fixed issue where cache did not contain the computed groups
|
||||
@ -1,2 +0,0 @@
|
||||
bugfixes:
|
||||
- assert - add 'success_msg' to valid args (https://github.com/ansible/ansible/pull/47030)
|
||||
@ -1,2 +0,0 @@
|
||||
bugfixes:
|
||||
- "The docker_* modules more uniformly check versions of docker-py/docker and (if necessary) the docker API."
|
||||
@ -1,2 +0,0 @@
|
||||
bugfixes:
|
||||
- junos - fix terminal prompt regex (https://github.com/ansible/ansible/pull/47096)
|
||||
@ -1,2 +0,0 @@
|
||||
minor_changes:
|
||||
- yum/dnf - fail when space separated string of names (https://github.com/ansible/ansible/pull/47109)
|
||||
@ -1,2 +0,0 @@
|
||||
minor_changes:
|
||||
- Scenario guide for VMware HTTP API usage.
|
||||
@ -1,4 +0,0 @@
|
||||
---
|
||||
bugfixes:
|
||||
- "pamd: use module.tmpdir for NamedTemporaryFile()
|
||||
(see https://github.com/ansible/ansible/pull/47133 and https://github.com/ansible/ansible/issues/36954)"
|
||||
@ -1,5 +0,0 @@
|
||||
---
|
||||
bugfixes:
|
||||
- "pamd: add delete=False to NamedTemporaryFile() fixes OSError on module completion, and
|
||||
removes print statement from module code.
|
||||
(see https://github.com/ansible/ansible/pull/47281 and https://github.com/ansible/ansible/issues/47080)"
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user