- I'm trying to write a correct command line that will ping to all hosts that are detailed in my inventory file
- my dockerfile:
FROM centos:7
RUN yum check-update; \
yum install -y gcc libffi-devel python3 epel-release; \
yum install -y python3-pip; \
yum install -y wget; \
yum clean all
RUN pip3 install --upgrade pip; \
pip3 install "ansible"; \
wget -q https://raw.githubusercontent.com/ansible-collections/azure/dev/requirements-azure.txt; \
pip3 install -r requirements-azure.txt; \
rm requirements-azure.txt; \
ansible-galaxy collection install azure.azcollection \
WORKDIR /github
CMD ["/usr/sbin/init"]
- All hosts are Windows OS hosts
- Below my Ansible library structure
C:.
└───bla_product
└───core
├───ansible
│ ├───inventories
│ │ ├───production
│ │ ├───staging
│ │ └───test
│ │ ├───cloud
│ │ └───onpremis
│ │ └───domain.com
│ │ │ lab_x.yml
│ │ │
│ │ └───group_vars
│ │ windows.yml
│ │
│ ├───playbooks
│ └───roles
- my inventory file lab_x.yml looks like this:
---
all:
children:
root:
children:
center:
children:
appservers:
hosts:
centeriis.domain.com:
ansible_host: 200.10.0.100
qservers:
hosts:
centerq.domain.com:
ansible_host: 200.10.0.101
dbservers:
hosts:
centerdb.domain.com:
ansible_host: 200.10.0.102
serverfarms:
hosts:
children:
gateways:
hosts:
south:
children:
brooklyn:
hosts:
srv1.domain.com:
ansible_host: 200.10.0.103
children:
endpoints:
hosts:
client1.domain.com:
ansible_host: 200.10.0.105
client2.domain.com:
ansible_host: 200.10.0.106
north:
children:
newyork:
hosts:
srv2.domain.com:
ansible_host: 200.10.0.104
children:
endpoints:
hosts:
client3.domain.com:
ansible_host: 200.10.0.107
- The
windows.yml
file include connection details that refers to all hosts, since they are all Windows OS hosts:
---
ansible_connection: winrm
ansible_user: domain\user
ansible_password: password
- Run the following command
ansible all -i lab_r.yml -m win_ping
results:
[DEPRECATION WARNING]: Ansible will require Python 3.8 or newer on the controller starting with Ansible 2.12. Current version: 3.6.8 (default, Nov 16 2020, 16:55:22) [GCC
4.8.5 20150623 (Red Hat 4.8.5-44)]. This feature will be removed from ansible-core in version 2.12. Deprecation warnings can be disabled by setting
deprecation_warnings=False in ansible.cfg.
centeriis.domain.com | UNREACHABLE! => {
"changed": false,
"msg": "[Errno None] Unable to connect to port 22 on 200.10.0.100",
"unreachable": true
}
- trying this one
ansible windows.yml -i lab_r.yml -m win_ping
gives:
[DEPRECATION WARNING]: Ansible will require Python 3.8 or newer on the controller starting with Ansible 2.12. Current version: 3.6.8 (default, Nov 16 2020, 16:55:22) [GCC
4.8.5 20150623 (Red Hat 4.8.5-44)]. This feature will be removed from ansible-core in version 2.12. Deprecation warnings can be disabled by setting
deprecation_warnings=False in ansible.cfg.
[WARNING]: Could not match supplied host pattern, ignoring: windows.yml
[WARNING]: No hosts matched, nothing to do
- What am I missing in this "story"?
- Is the problem with files OR commands?
- What is the reason that Ansible uses port 22 instead using WinRM protocol?
- Can win_ping command can works in this phase OR must I hold a playbook and role (task) files in order it to be worked?
- How do I make this whole business work (a command that uses the files within Inventories and group_vars folder)?