Roots Discourse

Error at setup logrotate during server provision

Getting the following error during server provisioning:

TASK [logrotate : nickhammond.logrotate | Setup logrotate.d scripts] ************************************************************************************************************
task path: /Users/josephroberts/localdev/papasteamstores.com/trellis/vendor/roles/logrotate/tasks/main.yml:8
<67.205.169.5> ESTABLISH SSH CONNECTION FOR USER: root
<67.205.169.5> SSH: EXEC ssh -vvv -o ForwardAgent=yes -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="root"' -o ConnectTimeout=10 -o ControlPath=/Users/josephroberts/.ansible/cp/1eb7617cc8 67.205.169.5 '/bin/sh -c '"'"'echo ~root && sleep 0'"'"''
<67.205.169.5> (0, b'/root\n', b'OpenSSH_7.9p1, LibreSSL 2.7.3\r\ndebug1: Reading configuration data /Users/josephroberts/.ssh/config\r\ndebug1: /Users/josephroberts/.ssh/config line 2: Applying options for *\r\ndebug1: /Users/josephroberts/.ssh/config line 45: Applying options for 67.205.169.5\r\ndebug1: Reading configuration data /etc/ssh/ssh_config\r\ndebug1: /etc/ssh/ssh_config line 48: Applying options for *\r\ndebug2: resolve_canonicalize: hostname 67.205.169.5 is address\r\ndebug1: auto-mux: Trying existing master\r\ndebug2: fd 3 setting O_NONBLOCK\r\ndebug2: mux_client_hello_exchange: master version 4\r\ndebug3: mux_client_forwards: request forwardings: 0 local, 0 remote\r\ndebug3: mux_client_request_session: entering\r\ndebug3: mux_client_request_alive: entering\r\ndebug3: mux_client_request_alive: done pid = 49562\r\ndebug3: mux_client_request_session: session request sent\r\ndebug3: mux_client_read_packet: read header failed: Broken pipe\r\ndebug2: Received exit status from master 0\r\n')
<67.205.169.5> ESTABLISH SSH CONNECTION FOR USER: root
<67.205.169.5> SSH: EXEC ssh -vvv -o ForwardAgent=yes -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="root"' -o ConnectTimeout=10 -o ControlPath=/Users/josephroberts/.ansible/cp/1eb7617cc8 67.205.169.5 '/bin/sh -c '"'"'( umask 77 && mkdir -p "` echo /root/.ansible/tmp `"&& mkdir "` echo /root/.ansible/tmp/ansible-tmp-1612997587.654769-50736-237756151622196 `" && echo ansible-tmp-1612997587.654769-50736-237756151622196="` echo /root/.ansible/tmp/ansible-tmp-1612997587.654769-50736-237756151622196 `" ) && sleep 0'"'"''
<67.205.169.5> (0, b'ansible-tmp-1612997587.654769-50736-237756151622196=/root/.ansible/tmp/ansible-tmp-1612997587.654769-50736-237756151622196\n', b'OpenSSH_7.9p1, LibreSSL 2.7.3\r\ndebug1: Reading configuration data /Users/josephroberts/.ssh/config\r\ndebug1: /Users/josephroberts/.ssh/config line 2: Applying options for *\r\ndebug1: /Users/josephroberts/.ssh/config line 45: Applying options for 67.205.169.5\r\ndebug1: Reading configuration data /etc/ssh/ssh_config\r\ndebug1: /etc/ssh/ssh_config line 48: Applying options for *\r\ndebug2: resolve_canonicalize: hostname 67.205.169.5 is address\r\ndebug1: auto-mux: Trying existing master\r\ndebug2: fd 3 setting O_NONBLOCK\r\ndebug2: mux_client_hello_exchange: master version 4\r\ndebug3: mux_client_forwards: request forwardings: 0 local, 0 remote\r\ndebug3: mux_client_request_session: entering\r\ndebug3: mux_client_request_alive: entering\r\ndebug3: mux_client_request_alive: done pid = 49562\r\ndebug3: mux_client_request_session: session request sent\r\ndebug3: mux_client_read_packet: read header failed: Broken pipe\r\ndebug2: Received exit status from master 0\r\n')
<67.205.169.5> ESTABLISH SSH CONNECTION FOR USER: root
<67.205.169.5> SSH: EXEC ssh -vvv -o ForwardAgent=yes -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="root"' -o ConnectTimeout=10 -o ControlPath=/Users/josephroberts/.ansible/cp/1eb7617cc8 67.205.169.5 '/bin/sh -c '"'"'rm -f -r /root/.ansible/tmp/ansible-tmp-1612997587.654769-50736-237756151622196/ > /dev/null 2>&1 && sleep 0'"'"''
<67.205.169.5> (0, b'', b'OpenSSH_7.9p1, LibreSSL 2.7.3\r\ndebug1: Reading configuration data /Users/josephroberts/.ssh/config\r\ndebug1: /Users/josephroberts/.ssh/config line 2: Applying options for *\r\ndebug1: /Users/josephroberts/.ssh/config line 45: Applying options for 67.205.169.5\r\ndebug1: Reading configuration data /etc/ssh/ssh_config\r\ndebug1: /etc/ssh/ssh_config line 48: Applying options for *\r\ndebug2: resolve_canonicalize: hostname 67.205.169.5 is address\r\ndebug1: auto-mux: Trying existing master\r\ndebug2: fd 3 setting O_NONBLOCK\r\ndebug2: mux_client_hello_exchange: master version 4\r\ndebug3: mux_client_forwards: request forwardings: 0 local, 0 remote\r\ndebug3: mux_client_request_session: entering\r\ndebug3: mux_client_request_alive: entering\r\ndebug3: mux_client_request_alive: done pid = 49562\r\ndebug3: mux_client_request_session: session request sent\r\ndebug3: mux_client_read_packet: read header failed: Broken pipe\r\ndebug2: Received exit status from master 0\r\n')
System info:
  Ansible 2.10.5; Darwin
  Trellis version (per changelog): "Use Python 3 for `ansible_local` Vagrant provisioner"
---------------------------------------------------
AnsibleUndefinedVariable: 'dict object' has no attribute 'iteritems'
failed: [67.205.169.5] (item={'name': 'wordpress-sites', 'path': '/srv/www/**/logs/*.log', 'options': ['weekly', 'maxsize 50M', 'missingok', 'rotate 8', 'compress', 'delaycompress', 'notifempty', 'create 0640 web www-data', 'sharedscripts'], 'scripts': {'prerotate': 'if [ -d /etc/logrotate.d/httpd-prerotate ]; then \\\n      run-parts /etc/logrotate.d/httpd-prerotate; \\\n    fi \\\n', 'postrotate': 'service nginx rotate'}}) => {
    "ansible_loop_var": "item",
    "changed": false,
    "item": {
        "name": "wordpress-sites",
        "options": [
            "weekly",
            "maxsize 50M",
            "missingok",
            "rotate 8",
            "compress",
            "delaycompress",
            "notifempty",
            "create 0640 web www-data",
            "sharedscripts"
        ],
        "path": "/srv/www/**/logs/*.log",
        "scripts": {
            "postrotate": "service nginx rotate",
            "prerotate": "if [ -d /etc/logrotate.d/httpd-prerotate ]; then \\\n      run-parts /etc/logrotate.d/httpd-prerotate; \\\n    fi \\\n"
        }
    }
}

PLAY RECAP **********************************************************************************************************************************************************************
67.205.169.5               : ok=77   changed=1    unreachable=0    failed=1    skipped=30   rescued=0    ignored=0   
localhost                  : ok=0    changed=0    unreachable=0    failed=0    skipped=1    rescued=0    ignored=0

Using python3, from what I can tell there is no section of trellis’ code that uses iteritems without first including from ansible.module_utils.six import iteritems so not sure what the issue is.

I updated trellis and updated the server from Ubuntu 16.04 to latest.

Here’s my system:

ansible 2.10.5
  config file = /Users/josephroberts/localdev/papasteamstores.com/trellis/ansible.cfg
  configured module search path = ['/Users/josephroberts/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.9/site-packages/ansible
  executable location = /usr/local/bin/ansible
  python version = 3.9.1 (default, Feb  3 2021, 07:04:48) [Clang 11.0.0 (clang-1100.0.33.17)]

Deploys run fine.

Any thoughts anybody? :sob:

Quick update. I tried to provision on a fresh DO Droplet. Same error :confused:

I’m thinking I may have to try downgrading my python version, but even if I specify interpreter_python = /usr/bin/python which is 2.7 in ansible.cfg, it still says my python version is 3.9?

My two cents here: Have you also re-installed from galaxy.yml (ansible-galaxy uses it for ansible roles)?
When you updated the galaxy.yml it may still be necessary to update the roles that would be downloaded from ansible galaxy.