Requires=dbus.service
to /lib/systemd/system/vmtoolsd.serviceThe answer is subtle and can be read here, here, and confirmed here : Customization of Linux guest operating systems requires that Perl is installed in the Linux guest operating system.
An error message in the vm-tools logs may also have caught your attention (detail) :
TASK [common : set timezone to Etc/UTC] ****************************************************************************************************************** [WARNING]: timedatectl command was found but not usable: Failed to create bus connection: No such file or directory . using other method. fatal: [myHost]: FAILED! => {"changed": false, "msg": "Error message:\ngiven timezone \"Etc/UTC\" is not available"}
250 def _verify_timezone(self):
251 tz = self.value['name']['planned']
252 tzfile = '/usr/share/zoneinfo/%s' % tz
253 if not os.path.isfile(tzfile):
254 self.abort('given timezone "%s" is not available' % tz)
255 return tzfile
s_myHost: hostname: myHost build: . container_name: c_myHost tty: true volumes: - /run/dbus/system_bus_socket:/run/dbus/system_bus_socket:ro
s_myHost: hostname: myHost build: . container_name: c_myHost tty: true volumes: - /run/dbus/system_bus_socket:/run/dbus/system_bus_socket:ro - /usr/share/zoneinfo:/usr/share/zoneinfo:ro
failed: [myHost] (item=someItem) => {"item": "someItem", "msg": "Failed to connect to the host via ssh: ", "unreachable": true}
ERROR! 'delegate_to' is not a valid attribute for a TaskInclude
refers to this task :
- name: Create MySQL manager user include_tasks: mysql-users.yml when: create_mysql_manager | bool delegate_to: "{{ groups['mysql'][0] }}" run_once: true vars: mysql_user_name: "{{ mysql_manager_username }}" mysql_user_password: "{{ mysql_manager_password }}" mysql_user_state: 'present' mysql_user_priv: '*.*:ALL,GRANT' mysql_user_checkadmin: false mysql_user_updatepw: 'on_create'
ansible 2.8.4 python version = 3.7.3 (default, Apr 3 2019, 05:39:12) [GCC 8.3.0]
[defaults] invalid_task_attribute_failed=False
fatal: [myHost]: UNREACHABLE! => {
"changed": false,
"msg": "Data could not be sent to remote host \"12.34.56.78\". Make sure this host can be reached over ssh: ",
"unreachable": true
}
v
's are necessary for the verbosity level shown here.<12.34.56.78> ESTABLISH SSH CONNECTION FOR USER: stuart the username it's actually trying to connect as
<12.34.56.78> SSH: EXEC ssh -C \ line broken for readability
-o ForwardAgent=yes \
-o ControlMaster=auto \
-o ControlPersist=60s \
-o StrictHostKeyChecking=no \
-o KbdInteractiveAuthentication=no \
-o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey \
-o PasswordAuthentication=no \
-o 'User="stuart"' \
-o ConnectTimeout=20 \
-o ControlPath=$HOME/.ansible/cp/5aa7fea824 172.18.0.2 '/bin/sh -c '"'"'sudo -H -S -n -u root /bin/sh -c '"'"'" cp
stands for ControlPath
'"'"'"'"'"'echo BECOME-SUCCESS-newtperqpfiryppbejvbytibvfvwafjg ; /usr/bin/python'"'"'"'"'"'"'"'"' && sleep 0'"'"'' the full ssh command with all options
failed: [slave_n] (item=etc/iptables/rules.v4) => {"changed": false, "item": "etc/iptables/rules.v4", "msg": "AnsibleFilterError: The ipaddr filter requires python-netaddr be installed on the ansible controller"}
My sudo password is a random string of characters generated by pwgen.
;
, (
, }
, |
, ?
or ~
.When developing / running playbooks, I have to enter my password again and again, but since I'm a lazy guy, it's also in the *scratch* buffer of my editor, Emacs, so that I can copy-paste it into the shell window when prompted.
In editors, you can copy text until :
failed: [slave_n] (item=someItem) => {"failed": true, "item": "someItem", "msg": "AnsibleError: Can't LOOKUP(dig): module dns.resolver is not installed"}
Collecting dnspython Downloading dnspython-1.15.0-py2.py3-none-any.whl (177kB) 100% |................................| 184kB 4.1MB/s Installing collected packages: dnspython Successfully installed dnspython-1.15.0