diff options
author | Suren A. Chilingaryan <csa@suren.me> | 2018-07-05 16:22:30 +0200 |
---|---|---|
committer | Suren A. Chilingaryan <csa@suren.me> | 2018-07-05 16:22:30 +0200 |
commit | 5416f8599ffa92b69bb87434dc1175d760760bbe (patch) | |
tree | 307218127ade7099282ac3bef123a2e9590e8f13 | |
download | itm-5416f8599ffa92b69bb87434dc1175d760760bbe.tar.gz itm-5416f8599ffa92b69bb87434dc1175d760760bbe.tar.bz2 itm-5416f8599ffa92b69bb87434dc1175d760760bbe.tar.xz itm-5416f8599ffa92b69bb87434dc1175d760760bbe.zip |
Initial import
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | README | 9 | ||||
-rw-r--r-- | cuda.yml | 6 | ||||
-rw-r--r-- | desktop.yml | 6 | ||||
-rw-r--r-- | install.yml | 17 | ||||
-rw-r--r-- | inventories/ipe.erb | 11 | ||||
-rw-r--r-- | roles/common/README | 11 | ||||
-rw-r--r-- | roles/common/default/main.yml | 1 | ||||
-rw-r--r-- | roles/common/tasks/main.yml | 18 | ||||
-rw-r--r-- | roles/common/tasks/software.yml | 30 | ||||
-rw-r--r-- | roles/kernel/tasks/software.yml | 11 | ||||
-rw-r--r-- | ssh.yml | 30 |
12 files changed, 151 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a8b42eb --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.retry @@ -0,0 +1,9 @@ +IT Management (itm) +============= + - Hackish playbooks to make common administration on IPE netwok. + +Problems +-------- + - Gnome desktop installation (Fedora) on Camera stations prevents system + from properly booting. I guess should be because of headless NVIDIA + cards.... But I am not sure... diff --git a/cuda.yml b/cuda.yml new file mode 100644 index 0000000..636b6f6 --- /dev/null +++ b/cuda.yml @@ -0,0 +1,6 @@ +- name: Common Software + hosts: all + remote_user: root + roles: + - role: cuda + diff --git a/desktop.yml b/desktop.yml new file mode 100644 index 0000000..6f35ab2 --- /dev/null +++ b/desktop.yml @@ -0,0 +1,6 @@ +- name: Common Software + hosts: all + remote_user: root + roles: + - role: desktop + diff --git a/install.yml b/install.yml new file mode 100644 index 0000000..2cd3768 --- /dev/null +++ b/install.yml @@ -0,0 +1,17 @@ +- name: Common Software + hosts: all + remote_user: root + roles: + - role: common + +- name: CUDA + hosts: cuda + remote_user: root + roles: + - role: cuda + +- name: Desktop + hosts: desktop + remote_user: root + roles: + - role: desktop diff --git a/inventories/ipe.erb b/inventories/ipe.erb new file mode 100644 index 0000000..5c33cdb --- /dev/null +++ b/inventories/ipe.erb @@ -0,0 +1,11 @@ +[camera] +192.168.26.[80:89] + +[student] +192.168.26.[60:69] + +[desktop:children] +student + +[cuda:children] +camera diff --git a/roles/common/README b/roles/common/README new file mode 100644 index 0000000..c8bd679 --- /dev/null +++ b/roles/common/README @@ -0,0 +1,11 @@ +Dependencies: + - Executed on all nodes + - No dependencies & no facts + +Parameters: + extra_packages: list of extra packages to install + +Actions: + - Enables standard repositories + - Install a set of common packages on all nodes (mc, etc.) +
\ No newline at end of file diff --git a/roles/common/default/main.yml b/roles/common/default/main.yml new file mode 100644 index 0000000..d355d15 --- /dev/null +++ b/roles/common/default/main.yml @@ -0,0 +1 @@ +os_update: "{{ ands_update | default(false) }}"
\ No newline at end of file diff --git a/roles/common/tasks/main.yml b/roles/common/tasks/main.yml new file mode 100644 index 0000000..8070bc6 --- /dev/null +++ b/roles/common/tasks/main.yml @@ -0,0 +1,18 @@ +- name: Ensure all required repositories are configured + package: name={{item}} state=present + register: result + with_items: + - epel-release + when: ansible_distribution == 'CentOS' or ansible_distribution == 'Red Hat Enterprise Linux' + +- name: Add our repository with updates and overrides + yum_repository: name="{{ item.name }}" description= "{{ item.description | default('Ands repository') }}" baseurl="{{ item.url }}" enabled="yes" gpgcheck="no" cost="{{ item.cost | default(1) }}" + with_items: "{{ ands_repositories | default([]) }}" + +# We always update on first install and if requested +- name: Update CentOS + yum: name=* state=latest update_cache=yes + when: (result | changed) or (os_update | default(false)) + +- name: Install additional software + include_tasks: software.yml diff --git a/roles/common/tasks/software.yml b/roles/common/tasks/software.yml new file mode 100644 index 0000000..c621ef3 --- /dev/null +++ b/roles/common/tasks/software.yml @@ -0,0 +1,30 @@ +- name: Install various ansible requirements + package: name={{item}} state=present + with_items: + - yum-plugin-versionlock + - libselinux-python + - libsemanage-python + - yamllint + - pyOpenSSL + - python-passlib + - python2-ruamel-yaml + - python2-jmespath + - python-ipaddress + - iptables-services + - PyYAML + - python-rhsm-certificates + +- name: Install various administrative tools + package: name={{item}} state=present + with_items: + - mc + - telnet + - lsof + - strace + - bzr + - git + - pciutils + +- name: Ensure all extra packages are installed + package: name={{item}} state=present + with_items: "{{ extra_packages | default([]) }}" diff --git a/roles/kernel/tasks/software.yml b/roles/kernel/tasks/software.yml new file mode 100644 index 0000000..92733aa --- /dev/null +++ b/roles/kernel/tasks/software.yml @@ -0,0 +1,11 @@ +- name: Install various administrative tools + package: name={{item}} state=present + register: result + with_items: + - kernel-devel + +# We always update on first install and if requested +- name: Update kernel + package: name=kernel state=latest + when: (result | changed) + @@ -0,0 +1,30 @@ +- name: Store known hosts of 'all' the hosts in the inventory file + hosts: all:localhost + connection: local + tasks: + - delegate_to: "localhost" + set_fact: target_hosts="{{ play_hosts | difference(['localhost']) }}" + + +- name: Store known hosts of 'all' the hosts in the inventory file + hosts: localhost + connection: local + + vars: + ssh_known_hosts_command: "ssh-keyscan -T 10" + ssh_known_hosts_file: "{{ lookup('env','HOME') + '/.ssh/known_hosts' }}" + ssh_known_hosts: "{{ target_hosts }}" + + tasks: + - name: For each host, scan for its ssh public key + shell: "ssh-keyscan {{ item }},`dig +short {{ item }}`" + with_items: "{{ ssh_known_hosts }}" + register: ssh_known_host_results + ignore_errors: yes + + - name: "Add/update the public key of {{ item.item }} in the {{ ssh_known_hosts_file }}" + known_hosts: + name: "{{ item.item }}" + key: "{{ item.stdout }}" + path: "{{ ssh_known_hosts_file }}" + with_items: "{{ ssh_known_host_results.results }}" |