Code Monkey home page Code Monkey logo

ansible-modules-core's Introduction

NOTE: As of Ansible 2.3, modules are now in the main Ansible repository.

See the repo merge guide for more information.

This repo still exists to allow bug fixes for stable-2.2 and older releases.

ansible-modules-core's People

Contributors

abadger avatar angstwad avatar bcoca avatar bennojoy avatar brucep-care avatar cchurch avatar dagwieers avatar dhozac avatar eest avatar emonty avatar fale avatar ggabriele avatar gundalow avatar jctanner avatar jimi-c avatar jmainguy avatar mattclay avatar mpdehaan avatar mscherer avatar nitzmahone avatar privateip avatar resmo avatar risaacson avatar ryansb avatar samdoran avatar sfromm avatar sivel avatar skvidal avatar srgvg avatar willthames avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ansible-modules-core's Issues

docker module supposed to be able to upgrade?

If you're familiar with the apt module, you can specify state=latest to get ansible to upgrade.

I want to do the same with docker. I want to run an image, and when that image has been updated I want the old container stopped and the new version of the container started.

Does the docker module support this? I've tried and it doesn't work as I hoped.

Example playbook which I hoped to re-use over and over to ensure my target is at the latest.

hosts: localhost
sudo: yes
tasks:

name: ensure redis container is running
docker: image=dockerfile/redis name=redis command=" bash -c 'redis-server /etc/redis/redis.conf'"

name: ensure latest version of the web container is running
docker: image=snazzy/cyweb ports=5000:5000 links=redis:redis name=cyweb

Thanks

s3: Unnecessary bucket_check condition while getting an object from s3

Hi There,

I was advised here: ansible/ansible#8123 to open a separate issue on newly separated repos.

Summary:

AWS IAM policy enables us to restrict users to specific file or folder in a bucket. While S3 get object operation is successful from other tools, ansible s3 module fails and returns an error Target bucket not found.

The operation succeeds when list bucket rights are provided to that IAM user.

Thanks!

tests: how do we submit these in concert with module code?

Like many others, I have a recently closed Ansible pull request that I'd like to resubmit here (ansible/ansible#6303).

My original pull request has an integration test for the added functionality, and I'd like to submit that. Unfortunately, the module tests didn't come along with the module code in the repository split.

Given this, what's the best way to submit tests in one repository for functionality that's yet to be merged in another repository?

gce_net silently fails when fwname already exists on another network

(This is cloned from ansible/ansible#6757)

Issue Type:

Bug report

Component Name:

gce_net

Ansible Version:

ansible 1.6 (devel 8c7828d) last updated 2014/03/25 10:21:15 (GMT -700)

Environment:

Ubuntu 12.04.1

Summary:

gce_net tasks "succeed" even when the underlying firewall creation request fails.

Steps To Reproduce:

$ ansible localhost -i inventory -m gce_net -a "name=network-a ipv4_range=10.0.0.0/8"
$ ansible localhost -i inventory -m gce_net -a "name=network-a fwname=my-fw allowed=tcp:22"
$ ansible localhost -i inventory -m gce_net -a "name=network-b ipv4_range=10.0.0.0/8"
$ ansible localhost -i inventory -m gce_net -a "name=network-b fwname=my-fw allowed=tcp:22"

Expected Results:

Failure. The resource already exists with different attributes. E.g.,

$ gcutil addfirewall my-fw --network=network-b --allowed=tcp:22
INFO: Waiting for insert of firewall my-fw. Sleeping for 3s.
ERROR: RESOURCE_ALREADY_EXISTS: The resource 'projects/eastern-verbena-523/global/firewalls/my-fw' already exists

Actual Results:

$ ansible localhost -i inventory -m gce_net -a "name=network-b fwname=my-fw allowed=tcp:22"
localhost | success >> {
"allowed": "tcp:22",
"changed": false,
"fwname": "my-fw",
"ipv4_range": "10.0.0.0/8",
"name": "network-b",
"src_range": null,
"src_tags": null,
"state": "present"
}

But the firewall doesn't have the requested attributes:

$ gcutil getfirewall my-fw
+---------------+-------------------------------+
| name | my-fw |
| description | |
| creation-time | 2014-03-29T14:11:42.499-07:00 |
| network | network-a |
| source-ips | 0.0.0.0/0 |
| source-tags | |
| target-tags | |
| allowed | tcp: 22 |
+---------------+-------------------------------+

The firewall rule is applied to the wrong network! gce_net treats fwname as an incidental attribute of the network such that "network-b exists with no firewall rule my-fw" is considered a success condition of "gce_net name=network-b fwname=my-fw ...". (I can assure you that creating a network with port 22 blocked is very much a failure state for my playbook!)

win_feature: not properly setting 'message' in results (previously https://github.com/ansible/ansible/issues/8723)

Issue Type:

Bug Report

Ansible Version:

ansible 1.7.1

Environment:

CentOS 7 (ansible), Windows Server 2012 R2 (managed machine)

Summary:

win_feature module does not properly set the 'message' field in its results.

The win_feature module returns a 'feature_result' list.
Each entry in the list contains:

display_name (descriptive name)
id (integer)
restart_needed (boolean)
skip_reason
success (boolean)
message

The message field returned appears to always be "Microsoft.Windows.ServerManager.Commands.FeatureMessage[]", instead of an actual message string.

Steps To Reproduce:

Run the windows/enable-iis.yml playbook from ansible-examples.

Expected Results:
changed: [ip.address.goes.here] => {"changed": true, "feature_exitcode": "SuccessRestartRequired", "feature_restart_needed": "Yes", "feature_result": [{"display_name": "Application Development", "id": "147", "message": "some actual descriptive message", "restart_needed": "True", "skip_reason": "NotSkipped", "success": "True"}, {"display_name": "Application Initialization", "id": "445", "message": "some actual descriptive message", "restart_needed": "True", "skip_reason": "NotSkipped", "success": "True"}, {"display_name": "ASP", "id": "150", "message": "some actual descriptive message", "restart_needed": "True", "skip_reason": "NotSkipped", "success": "True"},
Actual Results:
changed: [ip.address.goes.here] => {"changed": true, "feature_exitcode": "SuccessRestartRequired", "feature_restart_needed": "Yes", "feature_result": [{"display_name": "Application Development", "id": "147", "message": "Microsoft.Windows.ServerManager.Commands.FeatureMessage[]", "restart_needed": "True", "skip_reason": "NotSkipped", "success": "True"}, {"display_name": "Application Initialization", "id": "445", "message": "Microsoft.Windows.ServerManager.Commands.FeatureMessage[]", "restart_needed": "True", "skip_reason": "NotSkipped", "success": "True"}, {"display_name": "ASP", "id": "150", "message": "Microsoft.Windows.ServerManager.Commands.FeatureMessage[]", "restart_needed": "True", "skip_reason": "NotSkipped", "success": "True"},

When using exact_count no check for count_tag

Issue Type:

Bug Report

Ansible Version:

ansible 1.6.10

Environment:

N/A

Summary:

I was bit by the bug mentioned here: https://www.mail-archive.com/[email protected]/msg07937.html

Basically, there doesn't seem to be a requirement for count_tag when using exact_count. I don't see a bug report for this, thus adding it here.

What appears to happen currently is that if count_tag isn't specified, all (or many) ec2 instances match and it starts making api calls to terminate those instances. This was unexpected.

Steps To Reproduce:

Use ec2 and have an exact_count but no count_tag

Expected Results:

Failure because count_tag is required for exact_count

Actual Results:

Random termination of instances.

ec2_elb: Ansible claims changed=true when removing instance not in elb

Issue Type: Bug Report
Ansible Version: ansible 1.7.2
Environment: Mac OS X 10.9.5
Summary:

When using the ec2_elb module to remove an instance from a load balancer, if the instance was not in the load balancer before running the task, Ansible incorrectly reports the state has changed.

Steps To Reproduce:

Invoke the ec2_elb module to remove an instance that's not in a load balancer (or just run it twice)


---
- name: remove instance from a load balancer
  hosts: localhost
  vars:
    instances:
      - i-123456ab
    lb: my-load-balancer
  tasks:
    - name: take the instances out of the load balancer
      local_action: ec2_elb
      args:
        instance_id: "{{ item }}"
        ec2_elbs: "{{ lb }}"
        state: absent
      with_items: instances
Expected Results:
TASK: [take the instances out of the load balancer] ***************************
ok: [localhost -> 127.0.0.1] => (item=i-123456ab)

PLAY RECAP ********************************************************************
localhost                  : ok=1    changed=1    unreachable=0    failed=0
Actual Results:
TASK: [take the instances out of the load balancer] ***************************
changed: [localhost -> 127.0.0.1] => (item=i-123456ab)

PLAY RECAP ********************************************************************
localhost                  : ok=1    changed=1    unreachable=0    failed=0

synchronize can't find ssh key when path is relative

Issue Type:

Bug Report

Ansible Version:

ansible 1.7.1

Environment:

OSX

Summary:

When providing a relative path to ssh key, synchronize can't find it.

Steps To Reproduce:

Create a playbook with a synchronize task and use a relative path when defining your ssh key (either with --private-key at the cli, or with ansible_ssh_private_key_file assigned somewhere).

Expected Results:

rsync works.

Actual Results:

rsync errors with
msg: Warning: Identity file relative/path/to/file.pem not accessible: No such file or directory.

Workaround:
ansible_ssh_private_key_file: "{{ lookup('env', 'PWD') }}/relative/path/to/file.pem"

unarchive module: improve error display for failing extract

Issue Type:

Feature Idea

Ansible Version:

ansible 1.7.2

Environment:

Centos 6.5

Summary:

When the 'unarchive module' unpacks to a disk that is almost full it will display the "check_results" first, instead of the actual results for the unpacking "extract_results".
With lots of output this may mean missing the original error.

Steps To Reproduce:

A disk that is almost full and contains a zip file to be unpacked:

[root@t01 tmp]# df -h | grep /tmp
/dev/mapper/VG0-tmp  1008M  914M   43M  96% /tmp
[root@t01 tmp]$ ls -lah OpenConext-engineblock-*
-rw-r--r-- 1 boy users 34M Sep 29 11:42 OpenConext-engineblock-4.2.7.tar.gz

Unpacking with latest Ansible 1.7.2:

[root@t01 tmp]# ansible -i localhost, -c local -m unarchive -a "src=/tmp/OpenConext-engineblock-4.2.7.tar.gz dest=/tmp/ copy=no" -v localhost
localhost | FAILED >> {
    "check_results": {
        "cmd": "/bin/tar -v -C \"/tmp/\" --diff -zf \"/tmp/OpenConext-engineblock-4.2.7.tar.gz\"", 
        "err": "/bin/tar: OpenConext-engineblock-4.2.7: Warning: Cannot stat: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/database: Warning: Cannot stat: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/database/patch: Warning: Cannot stat: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/database/patch/patch-0011.sql: Warning: Cannot stat: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/database/patch/patch-0016.php: Warning: Cannot stat: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/database/patch/patch-0006.sql: Warning: Cannot stat: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/database/patch/patch-0007.sql: Warning: Cannot stat: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/database/patch/patch-0017.sql: Warning: Cannot stat: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/database/patch/patch-0001.php: Warning: Cannot stat: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/database/patch/patch-0008.php: Warning: Cannot stat: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/database/patch/patch-0003.sql: Warning: Cannot stat: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/database/patch/patch-0014.sql: Warning: Cannot stat: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/database/patch/patch-0009.sql: Warning: Cannot stat: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/database/patch/patch-0015.sql: Warning: Cannot stat: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/database/patch/patch-0002.sql: Warning: Cannot stat: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/database/patch/patch-0012.sql: Warning: Cannot stat: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/database/patch/patch-0010.php: Warning: Cannot stat: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/database/patch/patch-0004.sql: Warning: Cannot stat: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/database/patch/patch-0018.sql: Warning: Cannot stat: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/database/patch/patch-0005.sql: Warning: Cannot stat: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/database/patch/patch-0013.sql: Warning: Cannot stat: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/database/patch-template.php: Warning: Cannot stat: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/database/patch-template.sql: Warning: Cannot stat: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/NOTICE.txt: Warning: Cannot stat: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/bin: Warning: Cannot stat: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/bin/makeRelease.sh: Warning: Cannot stat: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/bin/ldaptest.php: Warning: Cannot stat: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/bin/formatLog.sh: Warning: Cannot stat: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/bin/composer: Warning: Cannot stat: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/bin/composer/simplesamlphp-post-install.sh: Warning: Cannot stat: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/bin/composer/zend-framework-post-install.sh: Warning: Cannot stat: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/bin/composer/dbpatch-post-install.sh: Warning: Cannot stat:
... SNIP PAGES AND PAGES OF OUTPUT ...
/www/authentication/css/ext/jqueryui/1.8.16/custom-theme/images/ui-icons_2e83ff_256x240.png\nOpenConext-engineblock-4.2.7/www/authentication/css/ext/jqueryui/1.8.16/custom-theme/images/ui-bg_glass_75_dadada_1x400.png\nOpenConext-engineblock-4.2.7/www/authentication/css/ext/jqueryui/1.8.16/custom-theme/images/ui-icons_222222_256x240.png\nOpenConext-engineblock-4.2.7/www/authentication/css/ext/jqueryui/1.8.16/custom-theme/images/ui-icons_454545_256x240.png\nOpenConext-engineblock-4.2.7/www/authentication/css/ext/jqueryui/1.8.16/custom-theme/images/ui-bg_glass_75_e6e6e6_1x400.png\nOpenConext-engineblock-4.2.7/www/authentication/css/ext/jqueryui/1.8.16/custom-theme/images/ui-bg_glass_55_fbf9ee_1x400.png\nOpenConext-engineblock-4.2.7/www/authentication/css/ext/jqueryui/1.8.16/custom-theme/images/ui-bg_flat_75_ffffff_40x100.png\nOpenConext-engineblock-4.2.7/www/authentication/css/ext/jqueryui/1.8.16/custom-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png\nOpenConext-engineblock-4.2.7/www/authentication/css/ext/jqueryui/1.8.16/custom-theme/images/ui-bg_glass_95_fef1ec_1x400.png\nOpenConext-engineblock-4.2.7/www/authentication/css/ext/jqueryui/1.8.16/custom-theme/images/ui-icons_cd0a0a_256x240.png\nOpenConext-engineblock-4.2.7/www/authentication/css/error.css\nOpenConext-engineblock-4.2.7/www/authentication/css/wide/\nOpenConext-engineblock-4.2.7/www/authentication/css/wide/screen_ie.css\nOpenConext-engineblock-4.2.7/www/authentication/css/wide/screen.css\nOpenConext-engineblock-4.2.7/www/authentication/index.php\nOpenConext-engineblock-4.2.7/www/authentication/generated/\nOpenConext-engineblock-4.2.7/www/authentication/generated/js/\nOpenConext-engineblock-4.2.7/www/authentication/generated/js/1411979426/\nOpenConext-engineblock-4.2.7/www/authentication/generated/js/1411979426/js.min.js\nOpenConext-engineblock-4.2.7/www/authentication/generated/css/\nOpenConext-engineblock-4.2.7/www/authentication/generated/css/1411979426/\nOpenConext-engineblock-4.2.7/www/authentication/generated/css/1411979426/css.min.css\nOpenConext-engineblock-4.2.7/www/authentication/robots.txt\nOpenConext-engineblock-4.2.7/www/profile/\nOpenConext-engineblock-4.2.7/www/profile/media\nOpenConext-engineblock-4.2.7/www/profile/favicon.ico\nOpenConext-engineblock-4.2.7/www/profile/javascript\nOpenConext-engineblock-4.2.7/www/profile/css\nOpenConext-engineblock-4.2.7/www/profile/index.php\nOpenConext-engineblock-4.2.7/www/profile/robots.txt\n", 
        "rc": 1, 
        "unarchived": false
    }, 
    "dest": "/tmp/", 
    "extract_results": {
        "cmd": "/bin/tar -xzf \"/tmp/OpenConext-engineblock-4.2.7.tar.gz\"", 
        "err": "/bin/tar: OpenConext-engineblock-4.2.7/vendor/zendframework/zendframework1/tests/Zend/OpenId/ProviderTest.php: Wrote only 6144 of 10240 bytes\n/bin/tar: OpenConext-engineblock-4.2.7/vendor/zendframework/zendframework1/tests/Zend/OpenId/Consumer: Cannot mkdir: No space left on device\n/bin/tar: OpenConext-engineblock-4.2.7/vendor/zendframework/zendframework1/tests/Zend/OpenId/Consumer/Storage: Cannot mkdir: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/vendor/zendframework/zendframework1/tests/Zend/OpenId/Consumer/Storage/FileTest.php: Cannot open: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/vendor/zendframework/zendframework1/tests/Zend/OpenId/Extension: Cannot mkdir: No space left on device\n/bin/tar: OpenConext-engineblock-4.2.7/vendor/zendframework/zendframework1/tests/Zend/OpenId/Extension/SregTest.php: Cannot open: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/vendor/zendframework/zendframework1/tests/Zend/OpenId/Provider: Cannot mkdir: No space left on device\n/bin/tar: OpenConext-engineblock-4.2.7/vendor/zendframework/zendframework1/tests/Zend/OpenId/Provider/Storage: Cannot mkdir: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/vendor/zendframework/zendframework1/tests/Zend/OpenId/Provider/Storage/FileTest.php: Cannot open: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/vendor/zendframework/zendframework1/tests/Zend/OpenId/Provider/User: Cannot mkdir: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/vendor/zendframework/zendframework1/tests/Zend/OpenId/Provider/User/SessionTest.php: Cannot open: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/vendor/zendframework/zendframework1/tests/Zend/OpenId/AllTests.php: Cannot write: No space left on device\n/bin/tar: OpenConext-engineblock-4.2.7/vendor/zendframework/zendframework1/tests/Zend/File: Cannot mkdir: No space left on device\n/bin/tar: OpenConext-engineblock-4.2.7/vendor/zendframework/zendframework1/tests/Zend/File/TestAsset: Cannot mkdir: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/vendor/zendframework/zendframework1/tests/Zend/File/TestAsset/MultipleClassesInMultipleNamespaces.php: Cannot open: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/vendor/zendframework/zendframework1/tests/Zend/File/TestAsset/LocatorShouldFindThis.php: Cannot open: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/vendor/zendframework/zendframework1/tests/Zend/File/_files: Cannot mkdir: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/vendor/zendframework/zendframework1/tests/Zend/File/_files/locator-should-skip-this.php: Cannot open: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/vendor/zendframework/zendframework1/tests/Zend/File/_files/locator-should-skip-this.xml: Cannot open: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/vendor/zendframework/zendframework1/tests/Zend/File/ClassFileLocatorTest.php: Cannot open: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/vendor/zendframework/zendframework1/tests/Zend/File/Transfer: Cannot mkdir: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/vendor/zendframework/zendframework1/tests/Zend/File/Transfer/Adapter: Cannot mkdir: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/vendor/zendframework/zendframework1/tests/Zend/File/Transfer/Adapter/_files: Cannot mkdir: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/vendor/zendframework/zendframework1/tests/Zend/File/Transfer/Adapter/_files/file2
.... SNIP PAGES AND PAGES OF OUTPUT ...
ss: Cannot open: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/www/authentication/css/wide: Cannot mkdir: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/www/authentication/css/wide/screen_ie.css: Cannot open: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/www/authentication/css/wide/screen.css: Cannot open: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/www/authentication/index.php: Cannot open: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/www/authentication/generated: Cannot mkdir: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/www/authentication/generated/js: Cannot mkdir: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/www/authentication/generated/js/1411979426: Cannot mkdir: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/www/authentication/generated/js/1411979426/js.min.js: Cannot open: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/www/authentication/generated/css: Cannot mkdir: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/www/authentication/generated/css/1411979426: Cannot mkdir: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/www/authentication/generated/css/1411979426/css.min.css: Cannot open: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/www/authentication/robots.txt: Cannot open: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/www/profile: Cannot mkdir: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/www/profile/media: Cannot open: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/www/profile/favicon.ico: Cannot open: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/www/profile/javascript: Cannot open: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/www/profile/css: Cannot open: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/www/profile/index.php: Cannot open: No such file or directory\n/bin/tar: OpenConext-engineblock-4.2.7/www/profile/robots.txt: Cannot open: No such file or directory\n/bin/tar: Exiting with failure status due to previous errors\n", 
        "out": "", 
        "rc": 2
    }, 
    "failed": true, 
    "gid": 0, 
    "group": "root", 
    "handler": "TgzFile", 
    "mode": "01777", 
    "msg": "failed to unpack /tmp/OpenConext-engineblock-4.2.7.tar.gz to /tmp/", 
    "owner": "root", 
    "size": 270336, 
    "src": "/tmp/OpenConext-engineblock-4.2.7.tar.gz", 
    "state": "directory", 
    "uid": 0
}
Expected Results:

I expect to see the failing 'extract' first, the diff second.

Actual Results:

Instead I saw the diff first which gave confusing output.

Create gce instance with permissions / service account scopes

Issue Type:

Feature Idea

Ansible Version:

ansible 1.4.3

Environment:

N/A

Summary:

Want to use gce module to create an instance with any permissions to access any other Google cloud resources like storage. Apparently I need to pass in the service_account_scopes flag as is seen done in the unit test when calling gcutil directly. How can I pass this flag using the module?

Steps To Reproduce:

N/A

Expected Results:

N/A

Actual Results:

N/A

cc @erjohnso

Many thanks!

NOTE: this issue was ported over from the old ansible repo where it was ansible/ansible#6003

rhn_channel is using depreciated methods

Issue Type:
Bug Report

Ansible Version:
1.7.2

Environment:
OS X 10.9 / RHEL 6/7

Summary:
When adding a child channel to rhn sat server rhn_channel fails with 500 error.

Steps To Reproduce:
attempt to subscribe to a child channel with rhn_channel to sat server 5.4+

Expected Results:
Server gets subscribed to child channel.

Actual Results:
xmlrpclib.ProtocolError: <ProtocolError for redhat.example.com/rpc/api: 500 Internal Server Error>

channel.software.setSystemChannels is depreciated.
https://access.redhat.com/documentation/en-US/Red_Hat_Network_Satellite/5.5/html/API_Overview/files/html/handlers/ChannelSoftwareHandler.html#setSystemChannels

PR to follow

Service module fail on systemd host when unit file include \n

Issue Type:

Bug Report

Ansible Version:
ansible 1.8 (devel 402d0c37b8) last updated 2014/10/03 12:17:06 (GMT -400)
  lib/ansible/modules/core: (detached HEAD cb69744bce) last updated 2014/10/03 12:18:36 (GMT -400)
  lib/ansible/modules/extras: (detached HEAD 8a4f07eecd) last updated 2014/10/03 12:18:37 (GMT -400)
  configured module search path = /usr/share/ansible
Environment:

Centos 7 server

Summary:

ansible -m service -a "name=mailman state=started enabled=yes" fail on EL7. I spent time to diagnose it, and the cause is the presence of '\n' in the unit file.

# grep '\\n' /usr/lib/systemd/system/mailman.service
ExecStop=/bin/sh -c 'echo -e "# DO NOT EDIT THIS FILE!\n#\n# Contents of this file managed by /etc/init.d/mailman\n# Master copy is /usr/lib/mailman/cron/crontab.in" > /etc/cron.d/mailman'

This greatly confuse the module, since self.execute_command return stdout as 1 single string, whose lines are separated by \n. So if there is already \n in one of the line, this break on this line ( in get_systemd_status_dict, in system/service.py ):

return dict(line.split('=', 1) for line in out.splitlines())

Since this return a uneven number of item for dict, a exception is raised.

Steps To Reproduce:

Run the command ansible -m service -a "name=mailman state=started enabled=yes" on a EL7, with mailman installed.

Expected Results:

No failure

Actual Results:
failed: [mail.example.org] => {"failed": true, "parsed": false}
Traceback (most recent call last):
  File "/root/.ansible/tmp/ansible-tmp-1412360673.33-152814301059563/service", line 2836, in <module>
    main()
  File "/root/.ansible/tmp/ansible-tmp-1412360673.33-152814301059563/service", line 1274, in main
    service.service_enable()
  File "/root/.ansible/tmp/ansible-tmp-1412360673.33-152814301059563/service", line 695, in service_enable
    d = self.get_systemd_status_dict()
  File "/root/.ansible/tmp/ansible-tmp-1412360673.33-152814301059563/service", line 507, in get_systemd_status_dict
    return dict(line.split('=', 1) for line in out.splitlines())
ValueError: dictionary update sequence element #56 has length 1; 2 is required

git: get_head_branch incorrect when branch name contains a slash

[re-posting module issue from ansible/ansible#6672]

Issue Type:

Bug Report

Ansible Version:

1.5.3

Environment:

OS X 10.9.2

Summary:

get_head_branch() fails to correctly compute the HEAD branch if the branch name contains a slash. This is caused by splitting on '/' and indexing [-1] here.

Steps To Reproduce:

Run this playbook:

- name: checkout llvm
  git: repo=https://github.com/thpani/llvm.git
       dest=/home/vagrant/llvm/

Checkout fails because branch is computed as
release_33_nullsucc
instead of
patches/release_33_nullsucc.

Expected Results:

get_head_branch() computes the correct branch name.

I.e. behave as if the above example were

- name: checkout llvm
  git: repo=https://github.com/thpani/llvm.git
       dest=/home/vagrant/llvm/
       version=patches/release_33_nullsucc
Actual Results:
TASK: [checkout llvm] *********************************************************
failed: [default] => {"failed": true}
msg: Failed to checkout branch release_33_nullsucc

lineinfile repeatedly inserts multiline lines

Issue Type:

Bug Report

Ansible Version:

ansible 1.7.2

Environment:

Ubuntu 12.04

Summary:

When trying to insert multiple lines by adding \n to the line argument of the lineinfile the line gets inserted every time the task is executed.

Steps To Reproduce:

Run the following ansible call two times

ansible testhost -m lineinfile -a "dest=/tmp/testfile line='first line\nsecond line' create=yes"
Expected Results:
tongpu@localhost:~$ ansible testhost -m lineinfile -a "dest=/tmp/testfile line='first line\nsecond line' create=yes"
localhost | success >> {
    "backup": "", 
    "changed": true, 
    "msg": "line added"
}

tongpu@localhost:~$ ansible testhost -m lineinfile -a "dest=/tmp/testfile line='first line\nsecond line' create=yes"
localhost | success >> {
    "backup": "", 
    "changed": false, 
    "msg": ""
}

/tmp/testfile

first line
second line
Actual Results:
tongpu@localhost:~$ ansible testhost -m lineinfile -a "dest=/tmp/testfile line='first line\nsecond line' create=yes"
localhost | success >> {
    "backup": "", 
    "changed": true, 
    "msg": "line added"
}

tongpu@localhost:~$ ansible testhost -m lineinfile -a "dest=/tmp/testfile line='first line\nsecond line' create=yes"
localhost | success >> {
    "backup": "", 
    "changed": true, 
    "msg": "line added"
}

/tmp/testfile

first line
second line
first line
second line

[CRON module] Cross-reference List of some OK / Closed Tickets from other repo.

From the old ticketbase, I was watching a few items. These are ok to close and not port. I documented my findings there. (FYI the list of all modules is here; http://docs.ansible.com/list_of_all_modules.html )

1.Crontab Jobs may be scheduled at random minutes/hours and Jobs are ID'd by name not time.
ansible/ansible#6896

2.Crontab be able to write to a Crontab path begining with '/' as an an absolute path.
ansible/ansible#4881

[CRON module] Add Support for Env Variables, eg MailTo, as in Bash Cron.

The old repo had a PR that was upvoted quote a bit but not merged yet. It was referenced in two tickets;
1.[]This one has the code ; X.Adding env to allow cron jobs with environment variables by djatlantic · Pull Request #4584 · ansible/ansible ;; ansible/ansible#4584

2.[]This one is a subset of [1] and was not accepted. ; X.cron module: Add mailto parameter by RSpiertz · Pull Request #5466 · ansible/ansible ;; ansible/ansible#5466

Conditional pause does not work as expected

Issue Type:

Bug report

Ansible Version:

ansible 1.7.2

Environment:

CentOS release 5.9 (Final)

Summary:

When using the pause module together with a when: conditional, it's not always executed when it should. Looks like the condition is only evaluated against the first host in the host list. This makes it impossible to use pause e.g. after a conditional restart of some service to allow the service to come back up before continuing.

Steps To Reproduce:

Inventory:

[testhosts]
hosta
hostb
hostc
hostd

Playbook:


---
- name: Test pause
  hosts: testhosts
  gather_facts: no
  tasks:
    - name: Pause for hosta
      local_action: pause seconds=5
      when: inventory_hostname == 'hosta'

    - name: Pause for hostb
      local_action: pause seconds=5
      when: inventory_hostname == 'hostb'

    - name: Pause for hostd
      local_action: pause seconds=5
      when: inventory_hostname == 'hostd'
Expected Results:

Three 5 second pauses, one for hosta, one for hostb and one for hostd.

Actual Results:

Only one pause for hosta. The hostb and hostd pauses are skipped.

PLAY [Test pause] ************************************************************* 

TASK: [Pause for hosta] ******************************************************* 
(^C-c = continue early, ^C-a = abort)
[hosta, hostb, hostc, hostd]
Pausing for 5 seconds
ok: [hosta -> 127.0.0.1]

TASK: [Pause for hostb] ******************************************************* 
skipping: [hosta -> 127.0.0.1]

TASK: [Pause for hostd] ******************************************************* 
skipping: [hosta -> 127.0.0.1]

PLAY RECAP ******************************************************************** 
hosta                      : ok=1    changed=0    unreachable=0    failed=0   
hostb                      : ok=1    changed=0    unreachable=0    failed=0   
hostc                      : ok=1    changed=0    unreachable=0    failed=0   
hostd                      : ok=1    changed=0    unreachable=0    failed=0   

mount module doesn't work correctly with mount option "bind"

Issue Type:

Bug Report

Ansible Version:

ansible 1.5.4

Environment:

Ansible is running from OS/X Mavericks 10.9.2
I am managing an Ubuntu 12.04 instance

Summary:

When using the mount module and specifying an option of "bind", the filesystem is mounted over and over. This has been tracked down to what appears to be Python's os.path.ismount(path) returning false for any mounts with the bind option applied.

Steps To Reproduce:

Create a mount using the mount module with the following options:

  • fstype: none
  • opts: rw,bind
  • state: mounted
Expected Results:

I expect to see the mount point show up in /etc/fstab, the mount point to show when the command "mount" is ran in the terminal, and for the Ansible task to not show as "changed" for each run when no change has occurred.

Actual Results:

The mount point shows up properly in /etc/fstab, but the mount point is mounted each time the Ansible task is ran, causing it to be mounted over and over on the system as well as for the Ansible task to show the status of "changed".

(zabbix package install) yum state=present with with_items fails with conflict, while 'yum install ' works

Issue Type:

Bug Report

Ansible Version:

1.7.2

Environment:

Centos 6

Summary:

If you try to install zabbix-server and zabbix-server-pgsql package from the official zabbix repository with yum:

yum -y install zabbix-server zabbix-server-pgsql

It works without a problem, but if you do the same thing with Ansible:

- hosts: zabbix
  tasks:
    - yum: name=http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-release-2.4-1.el6.noarch.rpm state=present

    - yum: name={{ item }} state=present
      with_items:
        - zabbix-server
        - zabbix-server-pgsql

The task fails and reports:

Error: zabbix-server-mysql conflicts with zabbix-server-pgsql-2.4.0-1.el6.x86_64
Error: zabbix-server-pgsql conflicts with zabbix-server-mysql-2.4.0-1.el6.x86_64

I guess the reason for this is because zabbix-server depends on either zabbix-server-mysql or zabbix-server-pgsql and yum module tries to install one package at a time, so if it first installs zabbix-server, that package automatically installs zabbix-server-mysql, which later conflicts with zabbix-server-pgsql.

The workaround is very easy, you just have to only pass zabbix-server-pgsql to the yum module, since it will install zabbix-server as a dependency. The problem is that running a yum command with a list of packages doesn't work the same as the Ansible yum module with a list of packages passed using with_items. This means you will never know what will the module install, compared to the yum command, which is bad in my opinion.

Steps To Reproduce:

You can reproduce the bug, by just running the above playbook.

Expected Results:

It should install both packages.

Actual Results:

Only installs zabbix-server and the second package reports a conflict with zabbix-server-mysql, which was installed as a dependency for zabbix-server-mysql.

ec2_eip module creates new ip on repeated run

Issue Type:

Bug Report

Ansible Version:

ansible 1.7.1

Environment:

Ubuntu 14.04.1

Summary:

If an EC2 instance already has an EIP associated to it, I would expect the ec2_eip module to do nothing/reuse the existing IP. Instead, it creates a new IP and associates this.

Note that I am not asking for the functionality provided by reuse_existing_ip_allowed.

Steps To Reproduce:
  1. Associate an EIP to any instance using the ec2_eip module, for example - ec2_eip: instance_id=i-1212f003
  2. repeat
Expected Results:

An instance without an EIP gets a new one allocated.
An instance with an EIP gets the same one allocated (idempotent),

Actual Results:

An instance with an EIP gets the another new EIP allocated (no idempotent, every new run creates and allocated a new EIP)

Here's the playbook that creates an instance and associates an EIP.
(vpc and security group exist already)

- name: EIP module bug
  hosts: 127.0.0.1
  connection: local
  gather_facts: no
  tasks:
    - include_vars: "aws/eip-bug/vpc_info"
    - name: Creating instance
      local_action:
        module: ec2
        key_name: "keyname"
        region: us-east-1
        group_id:
          - "{{ sg_default.group_id }}"
        instance_type: t2.micro
        image: "ami-0619bf6e"
        wait: yes
        vpc_subnet_id: "{{ subnet_test_id }}"
        assign_public_ip: yes
        exact_count: 1
        count_tag:
          Environment: "eip-bug"
          Class: eip-bug
        instance_tags:
          Environment: "eip-bug"
          Class: eip-bug
          Name: eip-bug
      register: instance
    - name: Allocating elastic IP to instance
      ec2_eip:
        in_vpc: yes
        reuse_existing_ip_allowed: yes
        state: present
        region: us-east-1
        instance_id: "{{ instance.tagged_instances[0].id }}"
      register: instance_eip
    - debug: var=instance_eip.public_ip

The instance task is idempotent thanks to exact_count/count_tag. The EIP task creates and associates a new EIP on every invocation. Accordingly, the number of EIPs increases; after 4 invocations the task fails due to Amazon's restriction to 3 unallocated EIPs.

EIP module output with -vvv:

TASK: [Allocating elastic IP to instance] ************************************* 
<127.0.0.1> REMOTE_MODULE ec2_eip region=us-east-1 state=present instance_id=i-xxx
<127.0.0.1> EXEC ['/bin/sh', '-c', 'mkdir -p $HOME/.ansible/tmp/ansible-tmp-1411248496.02-82225394781211 && chmod a+rx $HOME/.ansible/tmp/ansible-tmp-1411248496.02-82225394781211 && echo $HOME/.ansible/tmp/ansible-tmp-1411248496.02-82225394781211']
<127.0.0.1> PUT /tmp/tmpvxur9q TO /home/user/.ansible/tmp/ansible-tmp-1411248496.02-82225394781211/ec2_eip
<127.0.0.1> EXEC ['/bin/sh', '-c', u'LANG=en_US.UTF-8 LC_CTYPE=en_US.UTF-8 /home/user/.pvenvs/ansible/bin/python /home/user/.ansible/tmp/ansible-tmp-1411248496.02-82225394781211/ec2_eip; rm -rf /home/user/.ansible/tmp/ansible-tmp-1411248496.02-82225394781211/ >/dev/null 2>&1']
changed: [127.0.0.1] => {"changed": true, "public_ip": "xx.xx.xx.xx"}

ansible_os_family = "NA" on Archlinux host (1.8-git)

Issue Type:

Bug report (originally reported ansible/ansible#8732)

Ansible Version:

$ ansible --version
ansible 1.8

Environment:

Archlinux host

Summary:

ansible_os_family no longer returns "Archlinux" for my Arch machines. It now returns "NA"

Steps To Reproduce:

ansible -m setup |grep ansible_os_family

Expected Results:
    "ansible_os_family": "Archlinux", 
Actual Results:
    "ansible_os_family": "NA", 

ec2_vpc module always returns "changed = true" when specifying routes

Issue Type:

Bug Report

Ansible Version:

ansible-playbook 1.8 (devel 3bd1e4f) last updated 2014/08/28 21:51:11 (GMT -400)

Environment:

boto 2.3.2.1

Summary:

Running the same VPC creation tasks always results in status changed. This seems to be triggered by line 492 of ec2_vpc, but that is an indicator that something is happening that shouldn't be.

Steps To Reproduce:
- hosts: localhost
  gather_facts: no
  tasks:
  - name: create vpc
    ec2_vpc:
      state: present
      cidr_block: 172.22.0.0/16
      resource_tags: { "Name": "TEST" }
      subnets:
        - cidr: 172.22.1.0/24
          resource_tags: { "Name":"TEST-1" }
          az: us-east-1b
        - cidr: 172.22.2.0/24
          resource_tags: { "Name":"TEST-2" }
          az: us-east-1c 
      route_tables:
        - subnets:
            - 172.22.1.0/24
            - 172.22.2.0/24
          routes:
            - dest: 0.0.0.0/0
              gw: igw 
      internet_gateway: True
      region: "{{ region }}"
      wait: yes
    register: vpc
Expected Results:

Creation would happen on the first time, but subsequent times changed should be = False.

Actual Results:

first run

$: ansible-playbook -i inventory/hosts test.yml -v

PLAY [localhost] **************************************************************

TASK: [create vpc] ************************************************************
changed: [localhost] => {"changed": true, "subnets": [{"az": "us-east-1c", "cidr": "172.22.2.0/24", "id": "subnet-45f92c32", "resource_tags": {"Name": "TEST-2"}}, {"az": "us-east-1b", "cidr": "172.22.1.0/24", "id": "subnet-0b2f3823", "resource_tags": {"Name": "TEST-1"}}], "vpc": {"cidr_block": "172.22.0.0/16", "dhcp_options_id": "dopt-d2cadfb0", "id": "vpc-0c5fea69", "region": "us-east-1", "state": "available"}, "vpc_id": "vpc-0c5fea69"}

PLAY RECAP ********************************************************************
localhost                  : ok=1    changed=1    unreachable=0    failed=0

second run

$: ansible-playbook -i inventory/hosts test.yml -v

PLAY [localhost] **************************************************************

TASK: [create vpc] ************************************************************
changed: [localhost] => {"changed": true, "subnets": [{"az": "us-east-1c", "cidr": "172.22.2.0/24", "id": "subnet-45f92c32", "resource_tags": {"Name": "TEST-2"}}, {"az": "us-east-1b", "cidr": "172.22.1.0/24", "id": "subnet-0b2f3823", "resource_tags": {"Name": "TEST-1"}}], "vpc": {"cidr_block": "172.22.0.0/16", "dhcp_options_id": "dopt-d2cadfb0", "id": "vpc-0c5fea69", "region": "us-east-1", "state": "available"}, "vpc_id": "vpc-0c5fea69"}

PLAY RECAP ********************************************************************
localhost                  : ok=1    changed=1    unreachable=0    failed=0

apt module doesn't install module with a 'when' condition

Issue Type:
Bug Report

Ansible Version:
ansible 1.7.2

Environment:
Ubuntu 14.04 amd64

Summary:

I made a list of package that I would like to be upgraded if needed.
So, I retrieve the list of every packages needed to be upgraded on my server,
and it install the package when the result is matched
The problem appears only when I add the when condition.

Steps To Reproduce:

Generate a list of file to be upgraded
vars:

  • to_upgrade: [ 'apache2-mpm-worker', 'apache2.2-bin', 'apache2.2-common' ]
    Create a tasks which will get the full package list of the server and run apt module to install each module included in the first generated list
    tasks:
  • name: List packages to upgrade
    shell: aptitude -q -F%p --disable-columns search "~U"
    register: updates
  • name: Upgrade
    apt: name={{ item }} state=latest

    debug: msg="Package to update:{{item}}"

    with_items: updates.stdout_lines
    when: item in to_upgrade

Expected Results:
Packages must be installed.
TASK: [Upgrade] ***************************************************************
<127.0.0.1> REMOTE_MODULE apt name=apache2-mpm-worker,apache2.2-bin,apache2.2-common state=latest
changed: [127.0.0.1] => (item=apache2-mpm-worker,apache2.2-bin,apache2.2-common,bash) => {"changed": true,
[...]
PLAY RECAP ********************************************************************
127.0.0.1 : ok=4 changed=2 unreachable=0 failed=0

Actual Results:
TASK: [Upgrade] ***************************************************************
skipping: [127.0.0.1] => (item=apache2-mpm-worker,apache2.2-bin,apache2.2-common)
[...]
PLAY RECAP
127.0.0.1 : ok=3 changed=1 unreachable=0 failed=0

Apt module hangs unexpectedly (without apt going interactive)

Template time!

Issue Type:

Bug Report

Ansible Version:

deploy@mail2:/home/josh$ ansible --version
ansible 1.7.2

Environment:

Ubuntu 14.04

Summary:

The apt module hangs when upgrading packages.

Steps To Reproduce:

Playbook:
- name: update cache
apt: "update_cache=yes"

  • name: upgrade packages
    apt: upgrade=safe

The issue also occurs when running upgrade=yes, and when running via ansible directly:
ansible all -s -m apt -a "update_cache=yes upgrade=yes"

Expected Results:

Packages are upgraded and the playbook continues, or the ansible command terminates

Actual Results:

Playbook never moves to the next step, or the ansible module never terminates. This occurs even when there are no packages to upgrade, so it should not be going interactive.

authorized_keys assumes home directory is already created.

ISSUE TYPE

Feature Idea

COMPONENT NAME

authorized_key module

ANSIBLE VERSION

N/A

SUMMARY

The authorized_keys.py module uses the "os.mkdir()" function to create the .ssh directory if it doesn't exist.
It's possible that the users home directory hasn't been created.
So using the "os.mkdirs()" function would recursively create the directory if the users home directory didn't exist.

Here is an error I came across when deploying ssh keys
File "//.ansible/tmp/ansible-tmp-1412053423.23-52811687695291/authorized_key", line 175, in keyfile
os.mkdir(sshdir, 0700)
OSError: [Errno 2] No such file or directory: '/users/lincolns/.ssh'

Support apt-mark hold

ISSUE TYPE

Feature Idea

COMPONENT NAME

apt

ANSIBLE VERSION

N/A

SUMMARY

This issue had reasonable interest, and all the apt-related modules are Core Modules, so opening a bug here. Here's the original issue: ansible/ansible#8060

git module key_file= option doesn't interpret the ~/ as $HOME

[This is a clone of ansible/ansible#7533 of which I am not the author]

Issue Type:

Bug Report

Ansible Version:

ansible 1.6.2

Environment:

Ubuntu 12.04

Summary:

git module key_file= option doesn't interpret the ~/ as $HOME

Steps To Reproduce:
git: repo=ssh://[email protected]/xxx/yyyy.git dest=~/compile key_file=~/.ssh/bitbucket_app -vvvv
Expected Results:

read the keyfile and checkout from git :)

Actual Results:
<localhost> REMOTE_MODULE git repo=ssh:********@bitbucket.org/xxx/yyy.git dest=~/compile key_file=~/.ssh/bitbucket_app
failed: [localhost] => {"cmd": "/usr/bin/git ls-remote origin -h refs/heads/master", "failed": true, "item": "", "rc": 128}
stderr: Warning: Identity file ~/.ssh/bitbucket_app not accessible: No such file or directory.

non_unique parameter for group module

Issue Type:

Feature Idea

Component Name:

group

Ansible Version:

ansible 1.7.2

Environment:

Any

Summary:

Module "user" has a nice "non_unique" parameter similar to bash command usermod with "--non-unique".

Unfortunately module "group" hasn't parameter "non_unique" (bash command groupmod however has --non-unique).

So it would be nice to have "non_unique" parameter in "group" module.

Issue originally from ansible/ansible#7358

stat module documentation

Issue Type:

What kind of ticket is this? “Documentation Report”

Ansible Version:

1.7.2 development

Environment:

What OS are you running Ansible from and what OS are you managing? Ubuntu 12.04

Summary:

The stat module exposes many attributes available via the stat function in the Python os module, and some additional attributes. These attributes should be mentioned in the documentation of the stat module. The attributes pw_name and isdir were used in the examples. I had to go to the source for the stat module to find the other attributes.

Here is what I would like to see added to the end of ansible/library/files/stat's DOCUMENTATION string. The only ones that I'm unsure about are pw_name, isgid and isuid.

returns: a stat object with the following attributes:
atime - last access time
ctime - last creation time
dev - path's device
exists - true if the file exists
gid - path's group id
inode - path's inode
isblk - true if path is a block device
ischr - true if path is a character device
isdir - true if path is a directory
isfifo - true if path is a fifo (a.k.a. named pipe)
isgid - invoking group's id matches path's group id
islnk - true if path is a symbolic link
isreg - true if path is a regular file
issock - true if path is a socket (a.k.a. UNIX Domain Socket)
isuid - invoking user's id matches path's user id
lnk_source - where path links to
md5 - md5 checksum for path
mode - the mode of path in 4 octal digits
mtime - last modification time
nlink - number of hard links to this path
pw_name - owner of path
rgrp - path mode: group read
roth - path mode: other read
rusr - path mode: user read
size - size of path
uid - path's user id
wgrp - path mode: group write
woth - path mode: other write
wusr - path mode: user write
xgrp - path mode: group execute
xoth - path mode: other execute
xusr - path mode: user execute

Steps To Reproduce:

Look at the stat module's documentation.

Expected Results:

More detail in the documentation without having to look at the stat module's source code.

Actual Results:

N/A

ec2_elb_lb always reports a changed state when specifying a https listener with certificate

This is a copy of ansible/ansible#9073 created by @itarchmerc and is fixed by #22

Issue Type:

When using the ec2_elb_lb module to create an ELB with a HTTPS listener with a SSL certificate, the module always reports the status as changed even when no changes are made.

Ansible Version:

1.7.1

Environment:

Management Machine: Mac OS X 10.9.4, ansible 1.7.1 installed via homebrew
Target Machine: EC2 ELB

Summary:

When using the ec2_elb_lb module to create an ELB with a HTTPS listener with a SSL certificate, the module always reports the status as changed even when no changes are made. If I remove the HTTPS listener and only specify HTTP, the status is reported correctly.

Steps To Reproduce:

Create an ELB with the ec2_elb_lb module with a HTTP and HTTPS (with SSL certificate) listener. The ELB will be provisioned.
Rerun the same task. The status will report as changed even though no changes were made.
Expected Results:

Status should be ok on subsequent runs of the same task

Actual Results:

Status always shows as changed.

V1.8 bug, Extra new-lines using copy module (using content) and lineinfile

@mm0 - re-opening your ticket here. Applying the ticket to try and assist with the process.

This was originally created as 'P2' 'bug_report' 'module' at ansible/ansible#8989

Details from original issue:

Issue Type:

Bug Report

Ansible Version:

V 1.8 (beta). Works as expected on 1.7.1

Environment:

N/A

Summary:

Extraneous newlines are added to multi-line yaml content when using the 'copy' module.

Steps To Reproduce:

Please see notes from original ticket below.

Expected Results:

No blank lines should be added - the behaviour should be as per version 1.7

Actual Results:

Please see notes from original ticket below.

Tested using this playbook:

hosts: localhost
connection: local
vars:
outfilefail1: ./outcertfail1
working_outfile1: ./outcert_working
working_outfile2: ./outcert_working2
certificate: |
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEApj8FWvKE5k4HfnZPHEM4b39LxmYiHyfUnemg4ywT4ydeyr2I
l0EiNQt9yMLr3jAuWFZE/+KTD2GPONIuOCEMwWrF0sBSP5cdndjwQqwIcL7YXNE+
4C1IT/GaNNGwolQXxSRzSSnBIAG9XplvAvdu+NjEVaha46L7XAiYWCU19UkwVITg
6hvfRkN6iVXzn5UolHbcMqHJB6/O7ItVZl/TEW5Ehc0+06q5BLHNvUaVX3ujy1sO
xxr9XZpTcYesTFcQUyI4KSphcYzJa0oRJrM8b0mLuAKGh4RBbxiMT65AYJz9wv5R
l4KnR6WZgwgU0oajdebJ5hayUIt46sCPP4jCvwIDAQABAoIBAGe1oO2fpXDW9K3b
uHZ1KNvFmcvnIxo0itsISCnv8Wgfw27O1kslguV8ibeYgfRWMlNBXkITYpKR1fso
g1TYqVBv/4D+IVEyQHOcRiYRlCJhrDAbCRJorVfR7NVOitZ5h2qg1pqpxaTl8PD2
3t4G5d+vuquFH04q+ovrgL5cWFDvmgyMz/hRFChwTDWpiP4dQUQXJkqf1gzGIAb9
cfu/kuyc2M6iPPAuFdWgVaG2V52ZHP7eVTZibEj3uu2BKA03fQtaaGz1Js10dVDP
LQYAHjGNiYtJOvT6N6En38XXykDDQ/3LLwRJ+S0r7y7F6XD5BfZsYu+yFFAGN/XY
I1IJa8ECgYEA1BlI4rHvkKgGWka5Hs2A1I+GW2Fbh/9WeKXOy/Klvcx6VqTerzGu
qVViREvITaMTXaV+aN1ZHaw9aQjtRtaIv3Q+QgG0iz8xdeyCAdB3Nz+sEreSK/nt
Z4W/uBsqL7EX+Ft52qJ3AFM9VEyE0sN81m4PDgbCbSRyy63nVNNNvkcCgYEAyKgX
7EEIcAVG8K9HQYZGUyjHQwRH4LmgdseXYwxgGXNwxujaQEU39baivvRvuEuRgmKA
7WqS2EhrCuLauyEaBGk5v0GZVD1Br67xWZ4JGXz8QRFaWU/eDfZGKdpzlYDsdVSW
ZJOO9i6bvRfsk74Fxmv9JREqUTtCOpl+rYw8O8kCgYB0GYseHEyIoJEppYD77X3R
3Oas6rQR06Ff1VNHrIExTdbByunieI2lP4nU3K6+YL/fCRITEOcRKRFMh4hquFCO
jHDv7MMJXgQTCu13VMeNRJtKe5XV4K8ldb8mZihHhucaGeiv1zLQyL/PfztNq5iQ
QBqZkPWojMUR3RW+BxSNTQKBgQDCemENY46o/ARgvJGEiX7ZlLlkU97SiTdkSFiK
8HCn2kJhF0iJaE0vgn9EMqehaOS0CYLKGTQQGkhdObgkDJYp1k7Y9tyEUAa9HwLf
CBPrtz7KVeZKj+U5hQtF/2ttaJJFueE1w+qY4l2hrXFnVJJGWV32MifgqV2sbB7i
V/v9OQKBgQC/khRqBF78r+c+IBD8qwFsul1q/1+GjHGniJVT11n0TaFA7uG8X5PM
P5TsBigLmNGk/44Tg3fe9iCZXVB09CMqJNdaxqhCvwjj8WJ+wkEY5yhv+lHehHUh
Njyac1N+crBFEd2Suww9Md9H9Sg/5AJW/lY5Ek9CRAG1LvAengbGdQ==
-----END RSA PRIVATE KEY-----
tasks:

name: fails
copy: content="{{ certificate }}" dest="{{ outfilefail1 }}"

name: fails
lineinfile: line="{{ certificate }}" dest="{{ outfilefail1 }}" create=yes

name: works 
copy: 
content: |
{{ certificate }}
dest: "{{ working_outfile1 }}"

name: works 
copy: 
content: >
{{ certificate }}
dest: "{{ working_outfile2 }}"

Description from Original ticket

As per @mm0

Please assume that all the indentation is correct, I wasn't sure how to do that here. I just created a
key using ssh-keygen for the certificate variable. I noticed that the first fail example (using the copy
module) adds two newlines between each line, and lineinfile only adds one extra, both of which are
wrong. I also included two working methods of doing this. All 4 examples work correctly in 1.7.1, but
on 1.8 only the last 2 work.

raw module doesn't support environment: dict

It should be possible to pass environment settings through the raw module, but the raw module does not appear to respect environment: dict settings, e.g. minimal play:

# bootstraps FreeBSD 10 to respect ansible's authority

---
- hosts: bootstrap
  user: root
  gather_facts: no
  tasks:
    - raw: /usr/sbin/pkg -N
      register: pkg
      ignore_errors: True
    - raw: /usr/sbin/pkg bootstrap -f
      environment:
        ASSUME_ALWAYS_YES: 1
      when: pkg|failed

Using env instead of the pkg command shows that ASSUME_ALWAYS_YES is not visible.

FWIW a simple work-around in this case was:

    - raw: env ASSUME_ALWAYS_YES=1 /usr/sbin/pkg bootstrap -f -y
      when: pkg|failed

Either this could be documented (I can do this) or the modules should play well together.

(duplicated from ansible/ansible#7692)

@jimi-c commented:

I can reproduce this with this minimal playbook as well:


---
- hosts: localhost
  connection: local
  gather_facts: no
  tasks:
    - raw: echo $FOO
      environment:
        FOO: "this is foo"

module ini_file fails when values are indented with tabs

Issue Type:

Bug Report

Ansible Version:

ansible 1.7.2

Environment:

Ubuntu 12.04

Summary:

When the ini_file encounters tabs in a file the task fails.

Steps To Reproduce:

Create a global ~/.gitconfig file by calling gitconfig --global user.name 'Test User' and try to change the name using

ansible testhost -m ini_file -a "dest=~/.gitconfig section=user option=email value='[email protected]'"
Expected Results:

Task should run succesfully and final ~/.gitconfig file should be something like this:

[user]
name = Test User
email = [email protected]
Actual Results:

Task fails and final ~/.gitconfig file is:

[user]
    name = Test User

service module does not enable correctly via update-rc.d

Issue Type:

“Bug Report”

Ansible Version:

ansible 1.8

Environment:

Ubuntu 13.10/14.04

Summary:

Fix or remove the faulty change detection for update-rc.d based service enabling.

Steps To Reproduce:
sudo apt-get install rrdcached

Correctly enabled after installation:

find /etc -iname '*rrdcached*' | sort
/etc/default/rrdcached
/etc/init.d/rrdcached
/etc/rc0.d/K20rrdcached
/etc/rc1.d/K20rrdcached
/etc/rc2.d/S20rrdcached
/etc/rc3.d/S20rrdcached
/etc/rc4.d/S20rrdcached
/etc/rc5.d/S20rrdcached
/etc/rc6.d/K20rrdcached

Disable:

ansible localhost -s -m service -a "name=rrdcached enabled=no"
localhost | success >> {
    "changed": true, 
    "enabled": false, 
    "name": "rrdcached"
}

Correctly disabled:

find /etc -iname '*rrdcached*' | sort
/etc/default/rrdcached
/etc/init.d/rrdcached
/etc/rc0.d/K20rrdcached
/etc/rc1.d/K20rrdcached
/etc/rc2.d/K80rrdcached
/etc/rc3.d/K80rrdcached
/etc/rc4.d/K80rrdcached
/etc/rc5.d/K80rrdcached
/etc/rc6.d/K20rrdcached

Re-enable:

ansible localhost -s -m service -a "name=rrdcached enabled=yes"
localhost | success >> {
    "changed": false, 
    "enabled": true, 
    "name": "rrdcached"
}

Note: Changed is false, which is incorrect.

Incorrect results on disk too:

find /etc -iname '*rrdcached*' | sort
/etc/default/rrdcached
/etc/init.d/rrdcached
/etc/rc0.d/K20rrdcached
/etc/rc1.d/K20rrdcached
/etc/rc2.d/K80rrdcached
/etc/rc3.d/K80rrdcached
/etc/rc4.d/K80rrdcached
/etc/rc5.d/K80rrdcached
/etc/rc6.d/K20rrdcached
Expected Results:
find /etc -iname '*rrdcached*' | sort
/etc/default/rrdcached
/etc/init.d/rrdcached
/etc/rc0.d/K20rrdcached
/etc/rc1.d/K20rrdcached
/etc/rc2.d/S20rrdcached
/etc/rc3.d/S20rrdcached
/etc/rc4.d/S20rrdcached
/etc/rc5.d/S20rrdcached
/etc/rc6.d/K20rrdcached
Actual Results:
find /etc -iname '*rrdcached*' | sort
/etc/default/rrdcached
/etc/init.d/rrdcached
/etc/rc0.d/K20rrdcached
/etc/rc1.d/K20rrdcached
/etc/rc2.d/K80rrdcached
/etc/rc3.d/K80rrdcached
/etc/rc4.d/K80rrdcached
/etc/rc5.d/K80rrdcached
/etc/rc6.d/K20rrdcached

change detection issue in check mode and templates with ~ expansion

Issue Type:

Bug Report

Ansible Version:

1.6.3 and 1.7.1

Environment:

Ubuntu 14.04

Summary:

When inside a template, the tilde expansion doesn't seem to work correctly.

Before the migration, this was ansible/ansible#8949.

Steps To Reproduce:

Here's the contents of the playbook:

romain:~/workspace/it_ansible_check_issue $ tree
.
├── copy.yml
└── roles
    └── copy
        ├── tasks
        │   └── main.yml
        └── templates
            └── template.j2

4 directories, 3 files
romain:~/workspace/it_ansible_check_issue $ cat copy.yml 

---
- name: copy template to servers
  hosts: all
  roles:
    - copy
romain:~/workspace/it_ansible_check_issue $ cat roles/copy/tasks/main.yml 
# copy/tasks/main.yml

---
- name: copy template to host (tilde)
  template: >
    src=template.j2
    dest=~romain/template_tilde

- name: copy template to host (slash)
  template: >
    src=template.j2
    dest=/home/romain/template_slash
romain:~/workspace/it_ansible_check_issue $ cat roles/copy/templates/template.j2 
test

Here's what happens when running the playbook without --check:

romain:~/workspace/it_ansible_check_issue $ ansible-playbook copy.yml -i localhost,

PLAY [copy template to servers] *********************************************** 

GATHERING FACTS *************************************************************** 
ok: [localhost]

TASK: [copy | copy template to host (tilde)] ********************************** 
ok: [localhost]

TASK: [copy | copy template to host (slash)] ********************************** 
ok: [localhost]

PLAY RECAP ******************************************************************** 
localhost                  : ok=3    changed=0    unreachable=0    failed=0

Here's what happens when running the playbook with --check:

romain:~/workspace/it_ansible_check_issue $ ansible-playbook copy.yml -i localhost, --check

PLAY [copy template to servers] *********************************************** 

GATHERING FACTS *************************************************************** 
ok: [localhost]

TASK: [copy | copy template to host (tilde)] ********************************** 
changed: [localhost]

TASK: [copy | copy template to host (slash)] ********************************** 
ok: [localhost]

PLAY RECAP ******************************************************************** 
localhost                  : ok=3    changed=1    unreachable=0    failed=0
Expected Results:

Running the playbook with or without the --check option shows the same number of changes.

Actual Results:

Running the playbook with --check option shows changes that don't happen when the playbook is run without it.

fetch (core module) can not deal with file name with space

I just found fetch does not work very well with filenames has spaces in them. so I wrote a test script.

name: report | fetch auditusage report from server
fetch: src="{{ item }}"
dest=/tmp/fetched
with_items:
- /tmp/test test.txt

basically "test.txt" works, "test test.txt" does not.

and here is the error message, looks like it just failed to create the file in local folder, therefore md5sum mismatched. (the whole folder structure on remote server was created locally)

failed: [_.__.com] => (item=/tmp/test test.txt) => {"dest": "/tmp/fetched/__.*_*.com/tmp/test test.txt", "failed": true, "file": "/tmp/test test.txt", "item": "/tmp/test test.txt", "md5sum": null, "remote_md5sum": "6fa871334b2e8715ef897730f8460553"}
msg: md5 mismatch

~
~

lineinfile should have an option to remove duplicate lines matched by regexp

Issue Type:

Feature Idea

Ansible Version:

All versions.

Environment:

Ubuntu 14.04, and all other.

Summary:

The module "lineinfile" should have an option to remove duplicate lines matched by regexp.
Currently it changes only the last line.

Steps To Reproduce:

Let's say that we have the following lines in sshd_config (don't ask me how I got this):

PasswordAuthentication yes
# some stuff
PasswordAuthentication yes

We run ansible as:

$ansible -c local -m lineinfile -a 'dest=./sshd_config  regexp="^[#\s]*PasswordAuthentication.*" line="PasswordAuthentication no"' localhost
Expected Results:

With an option like "remove_dups=yes" we would have:

# some stuff
PasswordAuthentication no
Actual Results:
PasswordAuthentication yes
# some stuff
PasswordAuthentication no

ec2_vol errors when attaching a volume from a snapshot

Issue type:

Bug report

Ansible Version:

1.6.2

Environment:

Mac OS X 10.9.3

Summary:

ec2_vol module fails to create a new volume from a snapshot and attach to an image, returning an error message that doesn't make sense given the arguments.

Steps to reproduce:

  1. Start an instance on EC2, record the instance id

  2. Create a new snapshot on EC2, record the snapshot id

  3. Use the ec2_vol module to attach:

    ansible localhost -m ec2_vol -a "instance=i-123456 snapshot=snap-abcdef"
    

Expected results:

Creates a new EBS volume from the snapshot, attaches volume to the instance.

Actual results:

$ ansible localhost -m ec2_vol -a "instance=i-123456 snapshot=snap-abcdef"
localhost | FAILED >> {
    "failed": true,
    "msg": "Cannot specify volume_size and either one of name or id"
}

The error makes no sense, given that neither volume_size, name, nor id are arguments.

Note that the documentation for ec2_vol has an example with this exact combination of arguments, so I assume this is legal. From the docs:

# Example using snapshot id
- local_action:
    module: ec2_vol
    instance: XXXXXX
    snapshot: "{{ snapshot }}"

stat module documentation

Issue Type:

What kind of ticket is this? “Documentation Report”

Ansible Version:

1.7.2 development

Environment:

What OS are you running Ansible from and what OS are you managing? Ubuntu 12.04

Summary:

The stat module exposes many attributes available via the stat function in the Python os module, and some additional attributes. These attributes should be mentioned in the documentation of the stat module. The attributes pw_name and isdir were used in the examples. I had to go to the source for the stat module to find the other attributes.

Here is what I would like to see added to the end of ansible/library/files/stat's DOCUMENTATION string. The only ones that I'm unsure about are pw_name, isgid and isuid.

returns: a stat object with the following attributes:
atime - last access time
ctime - last creation time
dev - path's device
exists - true if the file exists
gid - path's group id
inode - path's inode
isblk - true if path is a block device
ischr - true if path is a character device
isdir - true if path is a directory
isfifo - true if path is a fifo (a.k.a. named pipe)
isgid - invoking group's id matches path's group id
islnk - true if path is a symbolic link
isreg - true if path is a regular file
issock - true if path is a socket (a.k.a. UNIX Domain Socket)
isuid - invoking user's id matches path's user id
lnk_source - where path links to
md5 - md5 checksum for path
mode - the mode of path in 4 octal digits
mtime - last modification time
nlink - number of hard links to this path
pw_name - owner of path
rgrp - path mode: group read
roth - path mode: other read
rusr - path mode: user read
size - size of path
uid - path's user id
wgrp - path mode: group write
woth - path mode: other write
wusr - path mode: user write
xgrp - path mode: group execute
xoth - path mode: other execute
xusr - path mode: user execute

Steps To Reproduce:

Look at the stat module's documentation.

Expected Results:

More detail in the documentation without having to look at the stat module's source code.

Actual Results:

N/A

apt_repository should allow the repo filename to be specified

See ansible/ansible#8904

Issue Type: Feature Idea

Ansible Version: ansible 1.7.1

Environment: Ubuntu 14.04

Summary:

I request a feature to allow me to specify what filename the apt_repository creates

apt_repository: repo='deb http://archive.canonical.com/ubuntu hardy partner' state=present filename=hardy-partner.list

Steps To Reproduce:

When I add a repo such as:
deb http://dl.google.com/linux/talkplugin/deb/ stable main

A file is created named:
dl_google_com_linux_chrome_deb.list

When I install the package google-chrome-stable, which comes from this repo, it creates:
google-chrome.list

With the same repo content, so apt-get complains about duplicate entries

Expected Results:

Clean repository

Actual Results:

Duplicated repo entries

apt module hangs when aptitude asks for user input

Originally reported by @Debilski as ansible #7229 and closed without resolution:

Issue Type:

Bug Report

Ansible Version:

ansible 1.6 (devel d287179) last updated 2014/04/30 10:47:45 (GMT +200)

Environment:

Debian 7

Summary:

aptitude unfortunately says the following on its man page:

-y, --assume-yes
       When a yes/no prompt would be presented, assume that the user entered “yes”. In
       particular, suppresses the prompt that appears when installing, upgrading, or removing
       packages. Prompts for “dangerous” actions, such as removing essential packages, will still
       be displayed. This option overrides -P.

This is contrary to apt-get -y, which will simply abort after having found a ‘“dangerous” action’.
So, in short using -y is not enough to make aptitude fully non-interactive and may regularly (e.g. it also chokes on non-authenticated packages) cause ansible to freeze without further notice.

Steps To Reproduce:

Example task apt: upgrade=safe update_cache=yes to be executed on a machine with e.g. unauthenticated packages.

Real output of aptitude safe-upgrade -y on that machine would be:

# aptitude safe-upgrade -y
The following packages will be upgraded: 
  iceweasel libmms0 libmozjs24d mcollective-puppet-agent mcollective-puppet-common xulrunner-24.0 
6 packages upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 22.5 MB/22.5 MB of archives. After unpacking 127 kB will be freed.
WARNING: untrusted versions of the following packages will be installed!

Untrusted packages could compromise your system's security.
You should only proceed with the installation if you are certain that
this is what you want to do.

  xulrunner-24.0 iceweasel libmozjs24d 

Do you want to ignore this warning and proceed anyway?
To continue, enter "Yes"; to abort, enter "No": 

… and there it waits for user input.

Expected Results:

Ansible should simply fail the apt task.

Actual Results:

Ansible hangs and gives no information whatsoever.

Support starting stopped EC2 instances by tag

Issue Type:

Feature Idea

Ansible Version:

ansible 1.7.2

Environment:

N/A

Summary:

Allow user to start all stopped EC2 instances associated with a particular tag.

Steps To Reproduce:

Extend the ec2 module to enable, say, starting all stopped instances tagged with key=Name, Value=ExtraPower

   - local_action:
      module: ec2
      instance_tags:
            Name: ExtraPower
      state: running

Expected Results:

Any stopped instance with the associated tag will be started (any instance already running with the tag would be unaffected).

Actual Results:

N/A

Add timeout option to get_url

Issue Type:

“Feature Idea”

Ansible Version:

1.5.3

Environment:

Ubuntu 12.04

Summary:

We should be able to specify a timeout for get_url for downloading larger files (or for hitting longer running endpoints).

Right now, it looks like it's fixed at 10 seconds, the default for the timeout param of fetch_url.

Steps To Reproduce:

name: warmup cache get_url: url=http://foo:[email protected]/warmup dest=/warmup-done force=yes timeout=300

Expected Results:

TASK: [warmup cache] ********************************************************** 
changed: [12.34.12.34]

Actual Results:

TASK: [warmup cache] ********************************************************** 
fatal: [12.34.12.34] => failed to parse: SUDO-SUCCESS-auisjvazbmvdmhizbletefqldvuexvtd
Traceback (most recent call last):
File "/home/ubuntu/.ansible/tmp/ansible-tmp-1396050193.29-76687999901185/get_url", line 1664, in 
main()
File "/home/ubuntu/.ansible/tmp/ansible-tmp-1396050193.29-76687999901185/get_url", line 209, in main
tmpsrc, info = url_get(module, url, dest, use_proxy, last_mod_time, force)
File "/home/ubuntu/.ansible/tmp/ansible-tmp-1396050193.29-76687999901185/get_url", line 134, in url_get
rsp, info = fetch_url(module, url, use_proxy=use_proxy, force=force, last_mod_time=last_mod_time)
File "/home/ubuntu/.ansible/tmp/ansible-tmp-1396050193.29-76687999901185/get_url", line 1652, in fetch_url
r = urllib2.urlopen(request, None, timeout)
File "/usr/lib/python2.7/urllib2.py", line 126, in urlopen
return _opener.open(url, data, timeout)
File "/usr/lib/python2.7/urllib2.py", line 406, in open
response = meth(req, response)
File "/usr/lib/python2.7/urllib2.py", line 519, in http_response
'http', request, response, code, msg, hdrs)
File "/usr/lib/python2.7/urllib2.py", line 438, in error
result = self._call_chain(*args)
File "/usr/lib/python2.7/urllib2.py", line 378, in _call_chain
result = func(*args)
File "/usr/lib/python2.7/urllib2.py", line 890, in http_error_401
url, req, headers)
File "/usr/lib/python2.7/urllib2.py", line 865, in http_error_auth_reqed
response = self.retry_http_basic_auth(host, req, realm)
File "/usr/lib/python2.7/urllib2.py", line 878, in retry_http_basic_auth
return self.parent.open(req, timeout=req.timeout)
File "/usr/lib/python2.7/urllib2.py", line 400, in open
response = self._open(req, data)
File "/usr/lib/python2.7/urllib2.py", line 418, in _open
'_open', req)
File "/usr/lib/python2.7/urllib2.py", line 378, in _call_chain
result = func(*args)
File "/usr/lib/python2.7/urllib2.py", line 1207, in http_open
return self.do_open(httplib.HTTPConnection, req)
File "/usr/lib/python2.7/urllib2.py", line 1180, in do_open
r = h.getresponse(buffering=True)
File "/usr/lib/python2.7/httplib.py", line 1030, in getresponse
response.begin()
File "/usr/lib/python2.7/httplib.py", line 407, in begin
version, status, reason = self._read_status()
File "/usr/lib/python2.7/httplib.py", line 365, in _read_status
line = self.fp.readline()
File "/usr/lib/python2.7/socket.py", line 447, in readline
data = self._sock.recv(self._rbufsize)
socket.timeout: timed out

error when trying to use with_items with apt module

Originally opened as ansible/ansible#8314

Issue Type:

Bug Report

Ansible Version:

ansible 1.7 (devel 226dacc) last updated 2014/07/28 21:56:28 (GMT +300)

Environment:

managing host: Ubuntu 14.04 64bit
managed host: Ubuntu 10.04 32bit (python 2.6.5 + python-apt 0.7.94)

Summary:

Getting an error message while using with_items with the apt module.

Steps To Reproduce:

According to feature request #7863 and fix #8292, with_items should be used like this:

- name: install debs
  apt: deb=/tmp/{{ item }} state=installed
  with_items:
    - linux-headers-3.11.6-031106_3.11.6-031106.201310181453_all.deb
    - linux-headers-3.11.6-031106-generic_3.11.6-031106.201310181453_i386.deb
    - linux-image-3.11.6-031106-generic_3.11.6-031106.201310181453_i386.deb

Expected Results:

deb packages getting installed

Actual Results:

error message:

TASK: [install debs] ********************************************************** 
failed: [host1] => (item=linux-headers-3.11.6-031106_3.11.6-031106.201310181453_all.deb,linux-headers-3.11.6-031106-generic_3.11.6-031106.201310181453_i386.deb,linux-image-3.11.6-031106-generic_3.11.6-031106.201310181453_i386.deb) => {"failed": true, "item": "linux-headers-3.11.6-031106_3.11.6-031106.201310181453_all.deb,linux-headers-3.11.6-031106-generic_3.11.6-031106.201310181453_i386.deb,linux-image-3.11.6-031106-generic_3.11.6-031106.201310181453_i386.deb", "parsed": false}
invalid output was: SUDO-SUCCESS-mwctpznrbdkgnukozzhwfjskdskanudn
Traceback (most recent call last):
  File "<stdin>", line 1865, in <module>
  File "<stdin>", line 523, in main
  File "<stdin>", line 302, in install_deb
  File "/usr/lib/python2.6/dist-packages/apt/debfile.py", line 285, in compare_to_version_in_cache
    if pkgname in self._cache:
TypeError: argument of type 'NoneType' is not iterable


FATAL: all hosts have already failed -- aborting

/bin/sh: Ileagal instruction (coredump) when trying to use copy module with AIX

Issue Type:

Bug Report

Ansible Version:

ansible 1.7 (devel 75e5b64) last updated 2014/07/22 14:37:30 (GMT -400)

Environment:

RHEL 6 managing AIX

Summary:

Ansible fails when using copy module on AIX

Steps To Reproduce:

Attempt to copy file to AIX with Python 2.7.8 using copy module

Expected Results:

The file copies successfully

Actual Results:
<fdb> ESTABLISH CONNECTION FOR USER: root on PORT 22 TO fdb
<fdb> EXEC /bin/sh -c 'rc=0; [ -r "/testfile" ] || rc=2; [ -f "/testfile" ] || rc=1; [ -d "/testfile" ] && echo 3 && exit 0; (/usr/bin/md5sum /testfile 2>/dev/null) || (/sbin/md5sum -q /testfile 2>/dev/null) || (/usr/bin/digest -a md5 /testfile 2>/dev/null) || (/sbin/md5 -q /testfile 2>/dev/null) || (/usr/bin/md5 -n /testfile 2>/dev/null) || (/bin/md5 -q /testfile 2>/dev/null) || (/usr/bin/csum -h MD5 /testfile 2>/dev/null) || (/bin/csum -h MD5 /testfile 2>/dev/null) || (echo "${rc} /testfile")'
<fdb> EXEC /bin/sh -c 'mkdir -p $HOME/.ansible/tmp/ansible-tmp-1406560163.65-86612973678860 && echo $HOME/.ansible/tmp/ansible-tmp-1406560163.65-86612973678860'
<fdb> PUT /testfile TO /home/root/.ansible/tmp/ansible-tmp-1406560163.65-86612973678860/source
<fdb> PUT /tmp/tmpcKn29o TO /home/root/.ansible/tmp/ansible-tmp-1406560163.65-86612973678860/copy
<fdb> EXEC /bin/sh -c 'LANG=en_US.UTF-8 LC_CTYPE=en_US.UTF-8 /usr/local/python/python /home/root/.ansible/tmp/ansible-tmp-1406560163.65-86612973678860/copy; rm -rf /home/root/.ansible/tmp/ansible-tmp-1406560163.65-86612973678860/ >/dev/null 2>&1'
fdb | FAILED >> {
    "failed": true,
    "md5sum": "d41d8cd98f00b204e9800998ecf8427e",
    "msg": "/bin/sh: 5046336 Illegal instruction(coredump)\n",
    "parsed": false
}

Copied from here

Git submodule does not show the error message

Original issue: ansible/ansible#8596

Issue Type:

Feature Idea

Ansible Version:

ansible 1.7.1

Environment:

N/A

Summary:

I had a wrong permission in one of the files inside my .git folder but the git submodule didn't show the error message, only a very generic "msg: Failed to download remote objects and refs". I believe that the git submodule should show the error message that git is showing, so you do not have to log in and execute the command by yourself to check the error and see what happened.

Steps To Reproduce:

Just change the permissions of some files inside the .git to some that the ansible user cannot read/write

Expected Results:

The actual error

Actual Results:

"msg: Failed to download remote objects and refs"

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.