# -*- mode: yaml; indent-tabs-mode: nil; tab-width: 2; coding: utf-8-unix -*- --- - name: "base users.yml {{LOOP_USER}}" debug: verbosity: 3 msg: "base users.yml {{LOOP_USER}} en http_proxy={{lookup('env', 'http_proxy')|default('')}}" - name: "make ~/.config/testforge/" file: path: "{{ item|expanduser }}" state: directory mode: 0700 with_items: #? - "~{{LOOP_USER}}" - "~{{LOOP_USER}}/{{ BASE_USER_CONFIG_DIR }}" - "~{{LOOP_USER}}/{{ BASE_USER_CONFIG_DIR }}/facts.d" - "{{ BASE_TESTFORGE_YML|dirname }}" # An exception occurred during task execution. The error was: _os.mkdir(file, 0700) # msg: Unexpected failure during module execution. ignore_errors: true - name: ln -s 1777 /var/tmp/.ansible shell: | [ ! -d /var/tmp/.ansible ] && mkdir /var/tmp/.ansible && chmod 1777 /var/tmp/.ansible [ -d ~/.ansible ] || mkdir ~/.ansible [ -d ~/.ansible/tmp ] && [ -h ~/.ansible/tmp ] && exit 0 [ -h ~/.ansible/tmp ] || ln -s /var/tmp/.ansible ~/.ansible/tmp exit 0 - name: "stat ~/.config/testforge/facts.d/testforge.yml" stat: path: "{{ BASE_TESTFORGE_YML }}" register: base_testforge_ini_exists - block: - name: "make vagrant RO directories base" file: path: "{{ item|expanduser }}" state: directory mode: 0700 with_items: - "~{{LOOP_USER}}/.cache" - "~{{LOOP_USER}}/.config" - "~{{LOOP_USER}}/.gpg" - "~{{LOOP_USER}}/.local" - "~{{LOOP_USER}}/.ssh" - name: "make vagrant RO files base" copy: dest: "{{ item|expanduser }}" src: "{{ item|expanduser }}" force: yes mode: 0600 with_items: - "~{{LOOP_USER}}/.bashrc" - "~{{LOOP_USER}}/.bash_profile" # template or skel this when: false - block: - name: "create ~/.config/testforge/facts.d/testforge.yml BOF" lineinfile: dest: "{{ BASE_TESTFORGE_YML }}" insertbefore: BOF mode: 0600 create: yes regexp: "# -.- mode: yaml; indent-tabs-mode: nil; tab-width: 2; coding: utf-8-unix -.-" line: "# -*- mode: yaml; indent-tabs-mode: nil; tab-width: 2; coding: utf-8-unix -*-" register: base_create_testforge_yml when: not base_testforge_ini_exists.stat.exists - name: "~/.config/testforge/facts.d/testforge.yml VERSION" blockinfile: dest: "{{ BASE_TESTFORGE_YML }}" create: false insertafter: "# -.- mode: yaml; indent-tabs-mode: nil; tab-width: 2; coding: utf-8-unix -.-" marker: "# {mark} ANSIBLE MANAGED BLOCK base [{{ elt.name }}]" # lookup('vars', '{{ elt.name }}') block: | {{ elt.name }}: "{{ elt.val }}" with_items: - name: "TESTFORGE_VERSION" val: "{{ TESTFORGE_VERSION|default('1.0') }}" loop_control: loop_var: elt - name: "stat ~/.config/testforge/facts.d/testforge.yml" stat: path: "{{ BASE_TESTFORGE_YML }}" register: testforge_ini_exists - name: "including testforge.yml" debug: msg: "INFO: including {{BASE_TESTFORGE_YML}}" when: testforge_ini_exists.stat.exists - name: "WARN: NOT including testforge.yml" debug: msg: "WARN: NOT including {{BASE_TESTFORGE_YML}}" when: not testforge_ini_exists.stat.exists - name: "slurp REMOTE testforge.yml" slurp: src: "{{ BASE_TESTFORGE_YML }}" register: testforge_user_yml when: testforge_ini_exists.stat.exists # Bug: This is NOT setting the value of the variables, but the include_vars does. # Is this some kind of precedence issue? - name: "set_fact testforge_user_yml" set_fact: # cacheable changes the persistance AND precedence # cacheable: true args: "{{ testforge_user_yml['content']|b64decode }}" when: testforge_ini_exists.stat.exists - name: "DEBUG: testforge_user_yml defined - does not error if not defined!" # var: does not error if not defined! debug: var: TESTFORGE_VERSION # finally fails in 2.8.12 ignore_errors: true # set_fact fails silently on erroroneous content - an equals instead of a colon - block: - name: "DEBUG: testforge_user_yml contents" debug: verbosity: 1 msg: "{{ testforge_user_yml['content']|b64decode|to_yaml }}" - name: "make a tempfile" tempfile: state: file # path: delegate_to: localhost register: testforge_user_yml_file - name: "copy testforge_user_yml_file to tempfile" copy: dest: "{{testforge_user_yml_file.path}}" content: "{{ testforge_user_yml['content']|b64decode }}" delegate_to: localhost - name: "include_vars {{testforge_user_yml_file.path}}" include_vars: "{{testforge_user_yml_file.path}}" - name: "DEBUG: TESTFORGE_VERSION defined" # msg: will error if not defined! debug: msg: "TESTFORGE_VERSION={{ TESTFORGE_VERSION }}" when: - not ansible_check_mode # needed - base_testforge_ini_exists.stat.exists # and TESTFORGE_VERSION|default('') != '' rescue: - debug: msg: "ERROR: reading in testforge_user_yml_file " check_mode: false - name: "make pip dirs" file: path: "{{ item.dest | expanduser }}" state: directory owner: "{{ BOX_USER_NAME }}" group: "{{ BOX_ALSO_GROUP }}" mode: "{{ item.mode }}" with_items: - {dest: "~{{LOOP_USER}}/.cache/pip", mode: "0775" } - {dest: "~{{LOOP_USER}}/.local/{{BASE_LIB}}", mode: "0755" } # could be symlinks ignore_errors: true - name: "make .local symlinks dirs for pip --user" file: src: "{{ item.src }}" dest: "{{ item.dest | expanduser }}" state: link with_items: - src: "/usr/local/{{LIB}}/python{{BASE_PYTHON2_MINOR}}" dest: "~{{LOOP_USER}}/.local/{{LIB}}/python{{BASE_PYTHON2_MINOR}}" - src: "/usr/local/{{LIB}}/python{{BASE_PYTHON3_MINOR}}" dest: "~{{LOOP_USER}}/.local/{{LIB}}/python{{BASE_PYTHON3_MINOR}}" - src: "/usr/local/bin" dest: "~{{LOOP_USER}}/.local/bin" when: - not ansible_check_mode - name: "I think this is right make .local symlinks lib64 dirs" file: src: "{{ item.src | expanduser }}" dest: "{{ item.dest | expanduser }}" state: link with_items: - dest: "~{{LOOP_USER}}/.local/lib" src: "~{{LOOP_USER}}/.local/lib64" mode: "0755" ignore_errors: true when: - not ansible_check_mode - "BASE_LIB == 'lib64'" - name: "I think this is right make .local symlinks lib dirs" file: src: "{{ item.src | expanduser }}" dest: "{{ item.dest | expanduser }}" state: link with_items: - dest: "~{{LOOP_USER}}/.local/lib64" src: "~{{LOOP_USER}}/.local/lib" mode: "0755" ignore_errors: true when: - not ansible_check_mode - "BASE_LIB == 'lib'"