UNPKG

@installdoc/ansible-gas-station

Version:

An Ansible playbook that provisions your network with software from GitHub Awesome lists, developed with disaster recovery in mind ⛽🔥🤤

101 lines (93 loc) 3.29 kB
--- - name: "Ensure {{ hostsfile_dest_dir }} exists" ansible.windows.win_file: path: "{{ hostsfile_dest_dir }}" state: directory - name: Ensure hosts files are downloaded ansible.windows.win_get_url: url: "{{ hostsfile.url }}" dest: "{{ hostsfile_dest_dir }}/{{ hostsfile.filename }}" loop: - url: https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts filename: base - url: https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/fakenews/hosts filename: fakenews - url: https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/gambling/hosts filename: gambling - url: https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/porn/hosts filename: porn - url: https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/social/hosts filename: social - url: https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/fakenews-gambling-porn-social/hosts filename: all loop_control: loop_var: hostsfile register: download_result - name: Ensure a copy of hosts files are created ansible.windows.win_copy: src: "{{ hostsfile_dest_dir }}/{{ filename }}" dest: "{{ hostsfile_dest_dir }}/{{ filename }}-clean" remote_src: true loop: - base - fakenews - gambling - porn - social - all loop_control: loop_var: filename when: "download_result.results | map(attribute='changed') | join(',') | regex_search('True')" - name: Ensure the hosts file are sanitized community.windows.win_lineinfile: path: "{{ hostsfile_dest_dir }}/{{ filename }}-clean" regex: '(^ *#.*$)|^$' state: absent loop: - base - fakenews - gambling - porn - social - all loop_control: loop_var: filename when: "download_result.results | map(attribute='changed') | join(',') | regex_search('True')" - name: Backup the default hosts file ansible.windows.win_command: hostctl backup --path "{{ hostsfile_dest_dir }}/" # @action `hostctl` versions after v1.0.15 check for unique domains in a profile which makes # it extremely slow to process large hosts files. Revisit after a future version provides a # switch like that in version v1.0.3 # - name: Create hostctl profiles using the various hosts files # command: "hostctl add {{ filename }} --from {{ hostsfile_dest_dir }}/{{ filename }}-clean -q" # loop: # - base # - fakenews # - gambling # - porn # - social # - all # loop_control: # loop_var: filename - name: Read the content of the hosts files # noqa 301 ansible.windows.win_shell: type "{{ hostsfile_dest_dir }}/{{ filename }}-clean" loop: - base - fakenews - gambling - porn - social - all loop_control: loop_var: filename register: clean_files when: "download_result.results | map(attribute='changed') | join(',') | regex_search('True')" - name: Setup SwitchHosts include_tasks: user-Windows.yml loop: "{{ user_configs }}" loop_control: label: "{{ user.username }}" loop_var: user when: - "download_result.results | map(attribute='changed') | join(',') | regex_search('True')" - (user.system is not defined) or ((user.system is defined) and (not user.system))