diff --git a/.gitignore b/.gitignore index c14c89a..bd486cb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .idea venv stack.env +linodehosts.ini diff --git a/ansible.cfg b/ansible.cfg index 75d08f6..992fb32 100644 --- a/ansible.cfg +++ b/ansible.cfg @@ -1,4 +1,6 @@ [defaults] default_module_path=library inventory=hosts.ini -vault_password_file=.vault-pass +vault_password_file=.vault-pass.sh +host_key_checking = False +enable_plugins = linode diff --git a/hosts.ini b/hosts.ini index 3e59747..697e3a9 100644 --- a/hosts.ini +++ b/hosts.ini @@ -1,2 +1,6 @@ [servers] -cianhatton@qnap +;cianhatton@qnap +root@45.33.84.25 + +[localhost] +localhost ansible_connection=local ansible_python_interpreter=/Users/chatton/checkouts/ansible-homelab/venv/bin/python diff --git a/linode.yml b/linode.yml new file mode 100644 index 0000000..c65351b --- /dev/null +++ b/linode.yml @@ -0,0 +1,3 @@ +--- +# https://www.linode.com/docs/guides/deploy-linodes-using-ansible/#plugin-parameters +plugin: linode diff --git a/roles/setup_hosted_services/files/scripts/find-volumes-to-restore.py b/roles/setup_hosted_services/files/scripts/find-volumes-to-restore.py index 493163e..451ced4 100644 --- a/roles/setup_hosted_services/files/scripts/find-volumes-to-restore.py +++ b/roles/setup_hosted_services/files/scripts/find-volumes-to-restore.py @@ -31,7 +31,8 @@ def main(): missing_volumes.append(volume_name) for mv in missing_volumes: - print(mv) + if mv: + print(mv) if __name__ == "__main__": diff --git a/roles/setup_linode/defaults/main-vault.yml b/roles/setup_linode/defaults/main-vault.yml new file mode 100644 index 0000000..0034d8a --- /dev/null +++ b/roles/setup_linode/defaults/main-vault.yml @@ -0,0 +1,12 @@ +$ANSIBLE_VAULT;1.1;AES256 +36356161663039666634393933383830653035633438343866643730303434353632383031303965 +3465343332353437616663643662343262373333366162300a373662386533363234636234633339 +35383439373430656130353938653531636563663066646265643838323230356231333836326262 +6439626538643837390a383039373366626637333738386332356361306131323133383534323462 +32376564376363663666383639313064316365353037356633363035373632313561643030643933 +34663533313231636162306465656433663634643038343938396462643261656238626432633136 +39356562353463353034373534386537313634326534623830616362336638396337386631663538 +30663236653532316461306636333536373836626537363430613961346137626261333238366234 +30633438653936316539326436393634366236616664383835396434373966333166366265636661 +39666335653265323565313831303264336331363339333532353939653330383362363965353032 +383434386133323961373833303262336439 diff --git a/roles/setup_linode/defaults/main.yml b/roles/setup_linode/defaults/main.yml new file mode 100644 index 0000000..16db72e --- /dev/null +++ b/roles/setup_linode/defaults/main.yml @@ -0,0 +1,5 @@ +--- +# defaults file for setup_linode +ssh_keys: + - /Users/chatton/.ssh/id_rsa.pub +label: simple-linode diff --git a/roles/setup_linode/meta/main.yml b/roles/setup_linode/meta/main.yml new file mode 100644 index 0000000..fe3deea --- /dev/null +++ b/roles/setup_linode/meta/main.yml @@ -0,0 +1,53 @@ +galaxy_info: + author: your name + namespace: chatton + description: your role description + company: your company (optional) + + # If the issue tracker for your role is not on github, uncomment the + # next line and provide a value + # issue_tracker_url: http://example.com/issue/tracker + + # Choose a valid license ID from https://spdx.org - some suggested licenses: + # - BSD-3-Clause (default) + # - MIT + # - GPL-2.0-or-later + # - GPL-3.0-only + # - Apache-2.0 + # - CC-BY-4.0 + license: license (GPL-2.0-or-later, MIT, etc) + + min_ansible_version: 2.1 + + # If this a Container Enabled role, provide the minimum Ansible Container version. + # min_ansible_container_version: + + # + # Provide a list of supported platforms, and for each platform a list of versions. + # If you don't wish to enumerate all versions for a particular platform, use 'all'. + # To view available platforms and versions (or releases), visit: + # https://galaxy.ansible.com/api/v1/platforms/ + # + # platforms: + # - name: Fedora + # versions: + # - all + # - 25 + # - name: SomePlatform + # versions: + # - all + # - 1.0 + # - 7 + # - 99.99 + + galaxy_tags: [] + # List tags for your role here, one per line. A tag is a keyword that describes + # and categorizes the role. Users find roles by searching for tags. Be sure to + # remove the '[]' above, if you add tags to this list. + # + # NOTE: A tag is limited to a single word comprised of alphanumeric characters. + # Maximum 20 tags per role. + +dependencies: [] + # List your role dependencies here, one per line. Be sure to remove the '[]' above, + # if you add dependencies to this list. diff --git a/roles/setup_linode/tasks/main.yml b/roles/setup_linode/tasks/main.yml new file mode 100644 index 0000000..ad0cbe5 --- /dev/null +++ b/roles/setup_linode/tasks/main.yml @@ -0,0 +1,16 @@ +--- +- name: Include vault variables. + include_vars: defaults/main-vault.yml + +- name: Create a new Linode. + linode_v4: + label: "{{ label }}" + access_token: "{{ token }}" + type: g6-nanode-1 + region: us-east + image: linode/debian11 + root_pass: "{{ password }}" + authorized_keys: "{{ ssh_keys }}" + group: servers + state: present + register: my_linode diff --git a/roles/setup_linode/vars/main.yml b/roles/setup_linode/vars/main.yml new file mode 100644 index 0000000..da15b8b --- /dev/null +++ b/roles/setup_linode/vars/main.yml @@ -0,0 +1,2 @@ +--- +# vars file for setup_linode diff --git a/roles/setup_samba/molecule/default/converge.yml b/roles/setup_samba/molecule/default/converge.yml deleted file mode 100644 index 4d8bc71..0000000 --- a/roles/setup_samba/molecule/default/converge.yml +++ /dev/null @@ -1,7 +0,0 @@ ---- -- name: Converge - hosts: all - tasks: - - name: "Include chatton.samba" - include_role: - name: "chatton.samba" diff --git a/roles/setup_samba/molecule/default/molecule.yml b/roles/setup_samba/molecule/default/molecule.yml deleted file mode 100644 index b5d8023..0000000 --- a/roles/setup_samba/molecule/default/molecule.yml +++ /dev/null @@ -1,13 +0,0 @@ ---- -dependency: - name: galaxy -driver: - name: docker -platforms: - - name: instance - image: quay.io/centos/centos:stream8 - pre_build_image: true -provisioner: - name: ansible -verifier: - name: ansible diff --git a/roles/setup_samba/molecule/default/verify.yml b/roles/setup_samba/molecule/default/verify.yml deleted file mode 100644 index e707420..0000000 --- a/roles/setup_samba/molecule/default/verify.yml +++ /dev/null @@ -1,10 +0,0 @@ ---- -# This is an example playbook to execute Ansible tests. - -- name: Verify - hosts: all - gather_facts: false - tasks: - - name: Example assertion - ansible.builtin.assert: - that: true diff --git a/roles/setup_samba/tests/inventory b/roles/setup_samba/tests/inventory deleted file mode 100644 index 878877b..0000000 --- a/roles/setup_samba/tests/inventory +++ /dev/null @@ -1,2 +0,0 @@ -localhost - diff --git a/roles/setup_samba/tests/test.yml b/roles/setup_samba/tests/test.yml deleted file mode 100644 index 2da65c6..0000000 --- a/roles/setup_samba/tests/test.yml +++ /dev/null @@ -1,5 +0,0 @@ ---- -- hosts: localhost - remote_user: root - roles: - - samba diff --git a/scripts/get_linode_ip.sh b/scripts/get_linode_ip.sh new file mode 100755 index 0000000..cf75d5d --- /dev/null +++ b/scripts/get_linode_ip.sh @@ -0,0 +1,7 @@ +#!/bin/bash +linode_ip="$(ansible-inventory -i linode.yml --list | jq ._meta.hostvars | jq '."simple-linode"' | jq -r .ipv4[0])" +inventory_entry="root@${linode_ip}" +echo $inventory_entry + +echo "[servers]" > linodehosts.ini +echo "${inventory_entry}" >> linodehosts.ini diff --git a/setup-linode.yml b/setup-linode.yml new file mode 100644 index 0000000..03cd371 --- /dev/null +++ b/setup-linode.yml @@ -0,0 +1,7 @@ +--- +- hosts: localhost + become: true + vars: + ansible_python_interpreter: /Users/chatton/checkouts/ansible-homelab/venv/bin/python + roles: + - role: 'roles/setup_linode'