diff --git a/.gitea/workflows/docker-image.deploy.yml b/.gitea/workflows/docker-image.deploy.yml index c49d34c..4abf4f6 100644 --- a/.gitea/workflows/docker-image.deploy.yml +++ b/.gitea/workflows/docker-image.deploy.yml @@ -22,5 +22,6 @@ jobs: uses: docker/build-push-action@v6 with: context: ${{gitea.workspace}}/docker + file: ansible-playbook.Dockerfile push: true - tags: git.limbosolutions.com/kb/ansible:latest \ No newline at end of file + tags: git.limbosolutions.com/kb/ansible-playbook:dev \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d04f3d2 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +**/**env.local \ No newline at end of file diff --git a/docker/.gitignore b/docker/.gitignore new file mode 100644 index 0000000..4ac7cc0 --- /dev/null +++ b/docker/.gitignore @@ -0,0 +1,2 @@ +playbook-workspace/** +workspace/** diff --git a/docker/Dockerfile b/docker/ansible-playbook.Dockerfile similarity index 56% rename from docker/Dockerfile rename to docker/ansible-playbook.Dockerfile index 861654b..88f6eb1 100644 --- a/docker/Dockerfile +++ b/docker/ansible-playbook.Dockerfile @@ -6,3 +6,9 @@ RUN apt-get install -y openssh-client RUN apt-get install python3-pip -y RUN apt-get install python3-virtualenv -y RUN pip3 install ansible --break-system-packages +RUN pip3 install ansible-runner --break-system-packages +RUN mkdir /workspace +RUN mkdir /scripts +COPY scripts /scripts +COPY playbook-sample-workspace /workspace +ENTRYPOINT ["python3", "/scripts/run-ansible-playbook.py"] diff --git a/docker/docker-run-ansible-playbook-local.sh b/docker/docker-run-ansible-playbook-local.sh new file mode 100755 index 0000000..81f1ebe --- /dev/null +++ b/docker/docker-run-ansible-playbook-local.sh @@ -0,0 +1,14 @@ +#/bin/bash +source docker/docker-run-ansible-playbook-local.env.local + +docker build docker \ + -f docker/ansible-playbook.Dockerfile \ + -t ${IMAGE_NAME} + +docker run --rm \ + -e ANSIBLE_PLAYBOOK_INVENTORY=$ANSIBLE_PLAYBOOK_INVENTORY \ + -v ${VOLUME_PATH}:/workspace \ + $IMAGE_NAME + + + diff --git a/docker/playbook-sample-workspace/site.yml b/docker/playbook-sample-workspace/site.yml new file mode 100644 index 0000000..7f55360 --- /dev/null +++ b/docker/playbook-sample-workspace/site.yml @@ -0,0 +1,9 @@ +- name: Hello from ansible + hosts: all + tasks: + - name: Ping my hosts + ansible.builtin.ping: + + - name: Print message + ansible.builtin.debug: + msg: Hello world diff --git a/docker/scripts/run-ansible-playbook.py b/docker/scripts/run-ansible-playbook.py new file mode 100644 index 0000000..781da01 --- /dev/null +++ b/docker/scripts/run-ansible-playbook.py @@ -0,0 +1,29 @@ +import os +import sys +from ansible_runner import Runner, RunnerConfig + + + + + +def executePlaybook(): + + rc = RunnerConfig( + private_data_dir="/workspace" + ) + + rc.playbook=os.environ.get('ANSIBLE_PLAYBOOK', "site.yml") + rc.inventory=os.environ.get('ANSIBLE_PLAYBOOK_INVENTORY', "127.0.0.1,") + if(rc.inventory=="127.0.0.1,"): + rc.cmdline_args= "--limit 127.0.0.1 --connection local" + rc.prepare() + r = Runner(config=rc) + r.run() + +def main(): + executePlaybook() + +main() + + + diff --git a/docker/scripts/ssh-test.bash b/docker/scripts/ssh-test.bash new file mode 100644 index 0000000..8333892 --- /dev/null +++ b/docker/scripts/ssh-test.bash @@ -0,0 +1 @@ +echo ola mundo \ No newline at end of file