commit 2200d6f9c77afd02d0a6091f646ad081e38f06c1 Author: srwadleigh <7832+srwadleigh@users.noreply.github.com> Date: Sat Apr 27 01:33:31 2024 +0000 initial role commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..12f8644 --- /dev/null +++ b/.gitignore @@ -0,0 +1,25 @@ +# eclipse +bin +*.launch +.settings +.metadata +.classpath +.project + +# idea +out +*.ipr +*.iws +*.iml +.idea + +# gradle +build +.gradle + +# other +eclipse +run + +# Files from Forge MDK +forge*changelog.txt diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..5addd2c --- /dev/null +++ b/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2024 Shane Wadleigh + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..733e9fc --- /dev/null +++ b/README.md @@ -0,0 +1,21 @@ +# ansible-roles-so + +A simple role to assist with the initial setup of stack orchestrator + + - https://github.com/cerc-io/stack-orchestrator/ + +## Task Configuration + +``` +- name: Setup stack orchestrator + hosts: somehost + become: true + roles: + - role: so +``` + +## Deployment + +``` +ansible-playbook -i hosts site.yml --tags=so --limit=somehost +``` diff --git a/defaults/main.yml b/defaults/main.yml new file mode 100644 index 0000000..fd1e380 --- /dev/null +++ b/defaults/main.yml @@ -0,0 +1,15 @@ +--- +so_user_add: false +so_user: so +so_home: "/home/{{ so_user }}" + +so_repo_checkout: true +so_repo_update: true +so_repo_dev_setup: false +so_repo_url: git@git.vdb.to:cerc-io/stack-orchestrator.git +so_repo_branch: main +so_repo_path: "{{ so_home }}" + +so_bin_get: true +so_bin_path: /usr/local/bin +so_bin_url: https://git.vdb.to/cerc-io/stack-orchestrator/releases/download/latest/laconic-so diff --git a/meta/main.yml b/meta/main.yml new file mode 100644 index 0000000..4d3004d --- /dev/null +++ b/meta/main.yml @@ -0,0 +1,38 @@ +--- +dependencies: [] + +galaxy_info: + role_name: so + author: srw + description: An Ansible role for configuring https://github.com/cerc-io/stack-orchestrator/ + company: "NMD, LLC" + license: "license (BSD, MIT)" + min_ansible_version: "2.10" + platforms: + - name: Fedora + versions: + - all + - name: Debian + versions: + - buster + - bullseye + - bookworm + - name: Ubuntu + versions: + - bionic + - focal + - jammy + - name: Alpine + version: + - all + - name: ArchLinux + versions: + - all + galaxy_tags: + - server + - system + - containers + - docker + - orchestration + - compose + - laconic diff --git a/tasks/main.yml b/tasks/main.yml new file mode 100644 index 0000000..d0173f4 --- /dev/null +++ b/tasks/main.yml @@ -0,0 +1,92 @@ +--- +# currently builtin user creation does not place ssh keys, this could go into common +- name: Setup SO user + tags: so + block: + + - name: Add so user + ansible.builtin.user: + name: "{{ so_user }}" + home: "{{ so_home }}" + uid: "{{ so_uid | default(omit) }}" + state: present + + #- name: Set authorized key taken from file + # ansible.posix.authorized_key: + # user: "{{ so_user }}" + # state: present + # key: "{{ lookup('file', {{ so_user_keys }}) }}" + + when: + - so_user_add == true + + +- name: Install Latest Stack Orchestrator + tags: so + block: + + - name: Check so paths + ansible.builtin.file: + path: "{{ item }}" + state: directory + owner: "{{ so_user }}" + group: "{{ so_user }}" + mode: 0755 + with_items: + - "{{ so_bin_path }}" + + - name: Download latest so binary + ansible.builtin.get_url: + url: "{{ so_bin_url }}" + dest: "{{ so_bin_path }}/laconic-so" + owner: root + group: root + mode: 0755 + timeout: 60 + force: yes + + when: + - so_bin_get == true + + +- name: SO user tasks + tags: so-repo + block: + + - name: Check repo paths + ansible.builtin.file: + path: "{{ item }}" + state: directory + owner: "{{ so_user }}" + group: "{{ so_user }}" + mode: 0755 + with_items: + - "{{ so_repo_path }}" + + - name: Checkout so repo + become: false + remote_user: "{{ so_user }}" + vars: + ansible_ssh_common_args: "-o ForwardAgent=yes" + ansible.builtin.git: + repo: "{{ so_repo_url }}" + dest: "{{ so_repo_path }}/stack-orchestrator" + update: "{{ so_repo_update }}" + version: "{{ so_repo_branch }}" + accept_hostkey: yes + + - name: Setup the local dev environment + ansible.builtin.shell: + cmd: "{{ so_repo_path }}/stack-orchestrator/scripts/developer-mode-setup.sh" + chdir: "{{ so_repo_path }}/stack-orchestrator/" + when: + - so_repo_dev_setup == true + + - name: Set path to dev laconic-so + set_fact: + so_bin_path: "{{ so_repo_path }}/stack-orchestrator/venv/bin" + when: + - so_repo_dev_setup == true + + when: + - so_repo_checkout == true