--- - hosts: localhost connection: local gather_facts: True tasks: - name: Install needed pip depencies pip: name: "{{ item.name }}" version: "{{ item.version }}" loop: - { name: 'azure', version: '3.0.0' } - { name: 'ansible[azure]', version: '2.5.3' } become: True - name: set ansible root folder set_fact: project: project_name - name: Create 1st level of folders file: state: directory recurse: yes path: "{{ playbook_dir }}/{{ project }}/{{ item }}" with_items: - [ 'library', 'module_utils', 'filter_plugins', 'roles', 'group_vars', 'host_vars' ] - name: Create 2nd level and more folders file: state: directory recurse: yes path: "{{ playbook_dir }}/{{ project }}/roles/{{ item[0] }}/{{ item[1] }}" with_nested: - [ 'common', 'web', 'updates'] - [ 'tasks', 'handlers', 'templates', 'files', 'vars', 'defaults', 'meta', 'library', 'module_utils', 'lookup_plugins' ] - name: Create defaults files file: state: touch path: "{{ playbook_dir }}/{{ project }}/roles/{{ item[0] }}/{{ item[1] }}/{{ item[2] }}" with_nested: - [ 'common', 'web', 'updates'] - [ 'tasks', 'handlers', 'vars', 'defaults', 'meta'] - [ 'main.yml', 'Windows.yml', 'Linux.yml', 'Mac.yml'] - name: Download Azure inventory modules get_url: url: "https://raw.githubusercontent.com/ansible/ansible/devel/contrib/inventory/{{ item.name }}" dest: "{{ playbook_dir }}/{{ project }}/{{ item.dest }}" loop: - { name: 'azure_rm.py', dest: 'production' } - { name: 'azure_rm.ini', dest: 'production.ini' } - { name: 'azure_rm.py', dest: 'stagging' } - { name: 'azure_rm.ini', dest: 'stagging.ini' } - name: Set excutable on azure_rm.py file: dest: "{{ playbook_dir }}/{{ project }}/{{ item }}" mode: "+x" loop: - production - stagging - name: Create playbooks file: path: "{{ playbook_dir }}/{{ project }}/{{ item }}" state: touch with_items: - [ 'main.yml']