Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mikemix/dockerized-ansible-playground
Dockerized Ansible playground
https://github.com/mikemix/dockerized-ansible-playground
ansible bash-scripting debian docker playground
Last synced: 17 days ago
JSON representation
Dockerized Ansible playground
- Host: GitHub
- URL: https://github.com/mikemix/dockerized-ansible-playground
- Owner: mikemix
- License: mit
- Created: 2018-04-19T09:08:29.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2018-04-19T12:30:05.000Z (over 6 years ago)
- Last Synced: 2024-11-05T20:16:47.530Z (2 months ago)
- Topics: ansible, bash-scripting, debian, docker, playground
- Language: Shell
- Size: 7.81 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Ansible playground
==================`Debian:stretch` based ansible playground. Spawn containers, allow passwordless root login for fun.
Scripts assume your public key is located at `$HOME/.ssh/id_rsa.pub`. Have fun.
## Build image
`bin/build`
```
Sending build context to Docker daemon 7.168kB
Step 1/6 : FROM debian:stretch
---> 2b98c9851a37
Step 2/6 : RUN apt-get update && apt-get install -y openssh-server
---> Using cache
---> 8be2a9865b70
Step 3/6 : RUN mkdir /var/run/sshd
---> Using cache
---> e932f211fb8e
Step 4/6 : RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
---> Using cache
---> a6bb7fedf882
Step 5/6 : EXPOSE 22
---> Using cache
---> 3805c1a41181
Step 6/6 : CMD ["/usr/sbin/sshd", "-D"]
---> Using cache
---> 2b8703296660
Successfully built 2b8703296660
Successfully tagged eg_sshd:latest
```## Spawn containers
`bin/up 5`
```
sshd_1 - 22/tcp -> 0.0.0.0:32800
sshd_2 - 22/tcp -> 0.0.0.0:32801
sshd_3 - 22/tcp -> 0.0.0.0:32802
sshd_4 - 22/tcp -> 0.0.0.0:32803
sshd_5 - 22/tcp -> 0.0.0.0:32804
````docker ps`
```
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
72e95f32352e eg_sshd "/usr/sbin/sshd -D" 17 seconds ago Up 15 seconds 0.0.0.0:32818->22/tcp sshd_5
466fe1b99450 eg_sshd "/usr/sbin/sshd -D" 19 seconds ago Up 17 seconds 0.0.0.0:32817->22/tcp sshd_4
5a07de62cd8b eg_sshd "/usr/sbin/sshd -D" 20 seconds ago Up 18 seconds 0.0.0.0:32816->22/tcp sshd_3
4474b5851ab4 eg_sshd "/usr/sbin/sshd -D" 22 seconds ago Up 20 seconds 0.0.0.0:32815->22/tcp sshd_2
a0d25077424c eg_sshd "/usr/sbin/sshd -D" 24 seconds ago Up 22 seconds 0.0.0.0:32814->22/tcp sshd_1
```## SSH into the container
Known host is added to `/dev/null` by the way so it won't spam your `known_hosts` file.
`bin/ssh 3`
```
Warning: Permanently added '[localhost]:32802' (ECDSA) to the list of known hosts.
Linux d1200bbb7e9b 4.4.0-119-generic #143-Ubuntu SMP Mon Apr 2 16:08:24 UTC 2018 x86_64The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.root@d1200bbb7e9b:~#
```## Destroy containers
`bin/destroy`
```
d1200bbb7e9b
4f3e602979cb
0d8c7824dee3
375202686b3d
3ed64b6c7474
```## Dynamic Ansible inventory
Bash script fetches running container list and outputs list in Ansible's JSON format:
Example usage:
`ansible-playbook -i ansible/inventory playbook.yml`
Script output:
> {"Ansible":{"hosts":["78e45d91ae22.localhost","612ed77c432c.localhost","e3bb7c4a0fa9.localhost"]},"_meta":{"hostvars":{"78e45d91ae22.localhost":{"ansible_ssh_port":"32813","ansible_ssh_user":"root","ansible_connection":"ssh"},"612ed77c432c.localhost":{"ansible_ssh_port":"32812","ansible_ssh_user":"root","ansible_connection":"ssh"},"e3bb7c4a0fa9.localhost":{"ansible_ssh_port":"32811","ansible_ssh_user":"root","ansible_connection":"ssh"}}}}