diff --git a/ansible.gitlab-ci.yml b/ansible.gitlab-ci.yml new file mode 100644 index 0000000..23a8ee4 --- /dev/null +++ b/ansible.gitlab-ci.yml @@ -0,0 +1,35 @@ +.ansible_lint: + image: quay.io/ansible/toolset:3.5.0 + stage: lint + variables: + EXTRA_ARGS: "" + script: + - ansible --version + - ansible-lint $EXTRA_ARGS + +.ansible_playbook_validate: + extends: .ansible_playbook_run + rules: + - when: always + script: + - ansible --version + - ansible-playbook -i $INVENTORY_PATH $PLAYBOOK_PATH $EXTRA_ARGS --check + +.ansible_playbook_run: + image: quay.io/ansible/toolset:3.5.0 + variables: + ANSIBLE_HOST_KEY_CHECKING: 'false' + ANSIBLE_FORCE_COLOR: 'true' + PLAYBOOK_PATH: playbook.yml + INVENTORY_PATH: inventory.yml + EXTRA_ARGS: "" + rules: + - when: manual + before_script: + - 'command -v ssh-agent >/dev/null || ( apt-get update && apt -y install openssh-client )' + - eval $(ssh-agent -s) + - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - + - mkdir -p ~/.ssh + - chmod 700 ~/.ssh + script: + - ansible-playbook -i $INVENTORY_PATH $PLAYBOOK_PATH $EXTRA_ARGS -vv \ No newline at end of file diff --git a/documentation/chapters/templates/ansible.adoc b/documentation/chapters/templates/ansible.adoc new file mode 100644 index 0000000..5055fd7 --- /dev/null +++ b/documentation/chapters/templates/ansible.adoc @@ -0,0 +1,33 @@ +:sourcedir: ../../../ + += Ansible-template + +Template Sammlung zur einfachen automation mit Ansible innerhalb der Gitlab CI. + +Erwartet das $SSH_PRIVATE_KEY in den Gitlab CI Variablen gesetzt ist. + +.Angebotene Templates: +|=== +|Name |Description +|.ansible_lint | Ruft den Linter von Ansible auf. +Der Output wird dann in der CI gezeigt und kann den Stil der Playbooks verbessern. +|.ansible_playbook_validate | Validiert, ob die Playbooks ausgeführt werden können und syntaktisch Sinn ergeben. +|.ansible_playbook_run | Führt die Playbooks auf dem Inventar aus. +|=== + +.Variables +|=== +|Name |Description | Default Value +|SSH_PRIVATE_KEY | SSH Key der von Ansible benutzt wird, um sich im Inventar anzumelden. +!! +Nicht in .gitlab.yml setzen. Statt dessen durch den CI Maintainer in den Gitlab Settings setzen lassen. | Nicht gesetzt. Muss in den Gitlab CI Variablen in den Settings gesetzt werden. +|PLAYBOOK_PATH | Path zum Playbook das ausgeführt werden soll | "playbook.yml" +|INVENTORY_PATH | Path zum Inventory das ausgeführt werden soll | "inventory.yml" +|EXTRA_ARGS | Extra Argumente für die Scripte | "" +|=== + +.Ansible-template +[source,yaml] +---- +include::{sourcedir}/ansible.gitlab-ci.yml[] +---- \ No newline at end of file diff --git a/documentation/document.adoc b/documentation/document.adoc index 2144873..cb69215 100644 --- a/documentation/document.adoc +++ b/documentation/document.adoc @@ -34,6 +34,10 @@ toc::[] // ########################################################################### include::chapters/generalInformation.adoc[leveloffset=1] +== Ansible Templates + +include::chapters/templates/ansible.adoc[leveloffset=2] + == Container Templates include::chapters/templates/container-publish.adoc[leveloffset=2]