TASK [what is postgres] 
************************************************************************************************

ok: [localhost] => {

    "postgres": {

        "changed": false,

        "msg": "All items completed",

        "results": [

            {

                "ansible_loop_var": "item",

                "changed": false,

                "failed": false,

                "invocation": {

                    "module_args": {

                        "checksum_algorithm": "sha1",

                        "follow": false,

                        "get_attributes": true,

                        "get_checksum": true,

                        "get_md5": false,

                        "get_mime": true,

                        "path": "/opt/db/data"

                    }

                },

                "item": "/opt/db/data",

                "stat": {

                    "exists": false

                }

            }

        ],

        "skipped": false

    }

}


Walter
--
Walter Rowe, Division Chief
Infrastructure Services, OISM
Mobile: 202.355.4123

On Sep 6, 2023, at 8:51 AM, Rowe, Walter P. (Fed) <walter.r...@nist.gov> wrote:

You are using "loop". This places the results in a list called "results" (ie 
postgres.results). Use the literal path in stat and you will get the reference 
you seek in the debug task.

- name: Get stats of a file
  ansible.builtin.stat:
    path: /opt/db/data
  register: postgres

- name: return ownership is right
  ansible.builtin.debug:
    msg: "owned by postgres"
  when: postgres.stat.pw_name == 'postgres'


OR


- name: Get stats of a file
ansible.builtin.stat:
path: "{{ item }}"
register: postgres
loop:
- /opt/db/data

- name: return ownership is right
ansible.builtin.debug:
msg: "{{ item.item }} owned by postgres"
loop: "{{ postgres.results }}"
when:
- item.stat.exists == true
- item.stat.pw_name is defined
- item.stat.pw_name == 'postgres'

- name: return ownership is not right
ansible.builtin.debug:
msg: "{{ item.item }} owned not by postgres"
loop: "{{ postgres.results }}"
when:
- item.stat.exists == true
- item.stat.pw_name is defined
- item.stat.pw_name != 'postgres'

- name: return does not exist
ansible.builtin.debug:
msg: "{{ item.item }} does not exist"
loop: "{{ postgres.results }}"
when:
- item.stat.exists == false


Walter
--
Walter Rowe, Division Chief
Infrastructure Services, OISM
Mobile: 202.355.4123

On Sep 6, 2023, at 8:34 AM, dulhaver via Ansible Project 
<ansible-project@googlegroups.com> wrote:

I want to check for existence of a folder and also the right owner, group and 
mode.
When any of the conditions (exists, owner=postgres, group=postgres, mode=0755) 
does not meet requirements I want to stop and be notified of the reason.

I think I need stat for that (exists, isdir, gr_name, pw_name, mode)

As a first step I try to get the value of pg_name with debug, but can not 
figure out how to adress that value


- name: Get stats of a file
  ansible.builtin.stat:
    path: "{{ item }}"
  register: postgres
  loop:
    - /opt/db/data

- name: return ownership is right
  ansible.builtin.debug:
    msg: "owned by postgres"
  when: postgres.stat.pw_name == 'postgres'



output

TASK [show content of 'postgres'] 
************************************************************************************************************************************************
fatal: [dvzsn-rd5400.ref.eakte.rz-dvz.cn-mv.de]: FAILED! => {"msg": "The 
conditional check 'postgres.stat.pw_name == 'postgres'' failed. The error was: 
error while evaluating conditional (postgres.stat.pw_name == 'postgres'): 'dict 
object' has no attribute 'stat'. 'dict object' has no attribute 'stat'\n\nThe 
error appears to be in 
'/home/gwagner/repos/automation_postgres/playbooks/check_postgres_dir.yml': 
line 16, column 7, but may\nbe elsewhere in the file depending on the exact 
syntax problem.\n\nThe offending line appears to be:\n\n\n - name: show content 
of 'postgres'\n ^ here\n"}


what I am doing wrong?

--
You received this message because you are subscribed to the Google Groups 
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to 
ansible-project+unsubscr...@googlegroups.com<mailto:ansible-project+unsubscr...@googlegroups.com>.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/1292803683.374335.1694003663225%40office.mailbox.org<https://groups.google.com/d/msgid/ansible-project/1292803683.374335.1694003663225%40office.mailbox.org?utm_medium=email&utm_source=footer>.


-- 
You received this message because you are subscribed to the Google Groups 
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to ansible-project+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/B337B96D-A8BB-4EAF-A1A4-C089C775A003%40nist.gov.

Reply via email to