adding makefile

pull/20/head
Cian Hatton 3 years ago
parent b435fe12af
commit f095a3467d

@ -0,0 +1,16 @@
#!/usr/bin/make -f
all: deps bootstrap homelab
SHELL := /bin/bash
bootstrap:
ansible-playbook bootstrap.yml -K -e ansible_ssh_user=cianhatton -e ansible_ssh_private_key_file=~/.ssh/id_rsa
qnap:
ansible-playbook setup-homelab.yml --limit qnap
homelab:
ansible-playbook setup-homelab.yml
deps:
pip install -r requirements.txt
ansible-galaxy install -r requirements.yml

@ -1,5 +1,19 @@
--- ---
# needs to be run with a different user with access to create ansible key and user.
# e.g.
# ansible-playbook bootstrap.yml -e ansible_ssh_user=cianhatton
# might additionally require -K if your user requires password for sudo.
- name: Generate SSH Key for ansible
hosts: localhost
connection: local
tasks:
- name: Generate an OpenSSH rsa keypair for ansible
community.crypto.openssh_keypair:
path: ~/.ssh/ansible
passphrase: ""
- hosts: all - hosts: all
become: true become: true
roles: roles:
- role: 'roles/bootstrap' - role: bootstrap

@ -24,7 +24,6 @@ olivetin:
docker_networks: [] docker_networks: []
homelab_group: cianhatton
homelab_user: cianhatton homelab_user: cianhatton
configure_samba: true configure_samba: true
@ -32,6 +31,9 @@ samba_group: smbgroup
samba_user: smbuser samba_user: smbuser
users: users:
- name: cianhatton - name: cianhatton
group: cianhatton
passwordless_sudo: true
shares: shares:
- /share - /share
- /share/public_files - /share/public_files

@ -7,6 +7,10 @@ linodes
[qnaps] [qnaps]
qnap qnap
[dockerhosts]
qnap
# BEGIN ANSIBLE MANAGED BLOCK # BEGIN ANSIBLE MANAGED BLOCK
[linodes] [linodes]
# END ANSIBLE MANAGED BLOCK # END ANSIBLE MANAGED BLOCK

@ -14,6 +14,7 @@
user: user:
name: ansible name: ansible
groups: root groups: root
system: true
- name: Add ssh key for ansible - name: Add ssh key for ansible
authorized_key: authorized_key:

@ -6,24 +6,25 @@
state: latest state: latest
update_cache: true update_cache: true
- name: Make sure we have a '{{homelab_group}}' group - name: Make sure we have a groups
group: group:
name: "{{homelab_group}}" name: "{{item.group}}"
state: present state: present
- name: Allow '{{homelab_user}}' group to have passwordless sudo with_items: "{{users}}"
lineinfile:
dest: /etc/sudoers
state: present
regexp: '^%{{homelab_user}}'
line: '%{{homelab_user}} ALL=(ALL) NOPASSWD: ALL'
validate: 'visudo -cf %s'
- name: Add User - name: Add Users
ansible.builtin.user: ansible.builtin.user:
name: "{{homelab_user}}" name: "{{item.name}}"
comment: "{{homelab_user}} user" comment: "{{item.name}} user"
uid: 1000 group: "{{item.group}}"
group: "{{homelab_group}}" with_items: "{{users}}"
- name: Add sudoers
template:
src: sudoers.j2
dest: "/etc/sudoers.d/{{item.name}}"
with_items: "{{users}}"
when: item.passwordless_sudo == true
- name: Set authorized key - name: Set authorized key
authorized_key: authorized_key:

@ -0,0 +1 @@
{{item.name}} ALL=(ALL) NOPASSWD: ALL

@ -1,31 +1,42 @@
--- ---
- hosts: qnap - name: Update packages and ensure users on all hosts
tags: ["always"]
hosts: all
become: true become: true
pre_tasks: pre_tasks:
- name: Include vault variables.
include_vars: "{{vault_file}}"
tags: ["always"]
- name: Update Packages - name: Update Packages
apt: apt:
upgrade: dist upgrade: dist
update_cache: true update_cache: true
roles:
- role: setup_users
- name: Install docker on docker hosts
hosts: dockerhosts
become: true
roles:
- role: setup_docker
tags: ["setup","docker"]
- name: Setup and deploy services on the QNAP
hosts: qnap
become: true
pre_tasks:
- name: Include vault variables.
include_vars: "{{vault_file}}"
tags: ["always"] tags: ["always"]
roles: roles:
- role: 'roles/setup_mergerfs' - role: setup_mergerfs
tags: ["mergerfs"] tags: ["mergerfs"]
- role: 'roles/setup_users' - role: setup_samba
tags: ["users"]
- role: 'roles/setup_samba'
tags: ["samba"] tags: ["samba"]
- role: 'roles/setup_docker' - role: setup_portainer
tags: ["docker"] tags: ["services", "portainer"]
- role: 'roles/setup_portainer' - role: setup_hosted_services
tags: ["portainer"]
- role: 'roles/setup_hosted_services'
tags: ["services"] tags: ["services"]
- hosts: linodes - hosts: linodes
become: true become: true
@ -33,18 +44,11 @@
- name: Include vault variables. - name: Include vault variables.
include_vars: "{{vault_file}}" include_vars: "{{vault_file}}"
tags: ["always"] tags: ["always"]
- name: Update Packages
apt:
upgrade: dist
update_cache: true
tags: ["always"]
roles: roles:
- role: 'roles/setup_users' - role: setup_samba
tags: ["users"]
- role: 'roles/setup_samba'
tags: ["samba"] tags: ["samba"]
- role: 'roles/setup_docker' - role: setup_docker
tags: ["docker"] tags: ["docker"]
- role: 'roles/setup_hosted_services' - role: setup_hosted_services
tags: ["services"] tags: ["services"]

Loading…
Cancel
Save