--- - hosts: all remote_user: vagrant become: true vars: - host_vars_directory: './host_vars' - host_vars_file: '{{ host_vars_directory }}/{{ inventory_hostname }}.yml' - pri_domain_name: 'vagrant.local' - ssh_key_path: '.vagrant/machines/{{ inventory_hostname }}/virtualbox/private_key' - update_host_vars: true roles: tasks: - name: updating apt cache (Debian) apt: update_cache: yes cache_valid_time: 3600 when: ansible_os_family == "Debian" - name: installing ansible pre-reqs (Debian) apt: name: "{{ item }}" state: present with_items: - python-dev - python-pip when: ansible_os_family == "Debian" - name: installing epel repo (RedHat) yum: name: "epel-release" state: present when: > ansible_os_family == "RedHat" and ansible_distribution != "Fedora" - name: installing ansible pre-reqs (RedHat) yum: name: "{{ item }}" state: present with_items: - python-devel - python-dnf - python-pip when: > ansible_os_family == "RedHat" and ansible_distribution != "Fedora" - name: installing ansible pre-reqs (Fedora) dnf: name: "{{ item }}" state: present with_items: - gmp-devel - python-crypto - python-devel - python-dnf - python-pip when: > ansible_os_family == "RedHat" and ansible_distribution == "Fedora" - name: installing ansible pip: name: "ansible" state: present - name: ensuring host_vars directory exists file: path: "./host_vars" state: directory delegate_to: localhost run_once: true become: false when: update_host_vars is defined and update_host_vars - name: ensuring host file exists in host_vars stat: path: "{{ host_vars_file }}" delegate_to: localhost register: host_var become: false when: > update_host_vars is defined and update_host_vars - name: creating missing host_vars file: path: "{{ host_vars_file }}" state: touch delegate_to: localhost become: false when: not host_var.stat.exists - name: updating ansible_ssh_port lineinfile: dest: "{{ host_vars_file }}" regexp: "^ansible_ssh_port{{ ':' }}" line: "ansible_ssh_port{{ ':' }} 22" delegate_to: localhost become: false when: > (update_host_vars is defined and update_host_vars) and (ansible_eth1 is defined or ansible_enp0s8 is defined) - name: updating ansible_ssh_host lineinfile: dest: "{{ host_vars_file }}" regexp: "^ansible_ssh_host{{ ':' }}" line: "ansible_ssh_host{{ ':' }} {{ ansible_eth1.ipv4.address }}" delegate_to: localhost become: false when: > (update_host_vars is defined and update_host_vars) and ansible_eth1 is defined - name: updating ansible_ssh_host lineinfile: dest: "{{ host_vars_file }}" regexp: "^ansible_ssh_host{{ ':' }}" line: "ansible_ssh_host{{ ':' }} {{ ansible_enp0s8.ipv4.address }}" delegate_to: localhost become: false when: > (update_host_vars is defined and update_host_vars) and ansible_enp0s8 is defined - name: updating ansible_ssh_key lineinfile: dest: "{{ host_vars_file }}" regexp: "^ansible_ssh_private_key_file{{ ':' }}" line: "ansible_ssh_private_key_file{{ ':' }} {{ ssh_key_path }}" delegate_to: localhost become: false when: > update_host_vars is defined and update_host_vars - name: ensuring host_vars is yaml formatted lineinfile: dest: "{{ host_vars_file }}" regexp: "---" line: "---" insertbefore: BOF delegate_to: localhost become: false when: > update_host_vars is defined and update_host_vars