From b0872756a47428a80157589f085d2e6badce9063 Mon Sep 17 00:00:00 2001 From: Michele Bologna Date: Fri, 21 Apr 2017 18:43:50 +0200 Subject: [PATCH] Feat: add support for Salt states --- .gitignore | 1 + Dockerfile-master | 3 +++ README.md | 56 ++++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 59 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index cbb0c3e..0f093c9 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,4 @@ Network Trash Folder Temporary Items .apdisk +srv/ diff --git a/Dockerfile-master b/Dockerfile-master index 55c22e3..058b5e8 100644 --- a/Dockerfile-master +++ b/Dockerfile-master @@ -10,6 +10,9 @@ RUN zypper --non-interactive addrepo http://download.opensuse.org/repositories/d COPY etc_master/supervisord.conf /etc/supervisor.d/supervisord.conf COPY etc_master/salt/master /etc/salt/master + VOLUME ["/etc/salt"] +VOLUME ["/srv/salt"] + EXPOSE 8000 CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor.d/supervisord.conf"] diff --git a/README.md b/README.md index c00ccc4..8f0b3ad 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ This container works with `supervisord` to automatically launch `salt-master` an ### Start `saltstack-master` container ```bash -docker run -d --name saltmaster -p 8000:8000 -ti mbologna/saltstack-master +docker run -d --name saltmaster -v `pwd`/srv/salt:/srv/salt -p 8000:8000 -ti mbologna/saltstack-master ``` ### Start `saltstack-minion` container (could be more than one!) @@ -92,6 +92,58 @@ docker exec saltmaster /bin/sh -c "salt '*' cmd.run 'uname -a'" } ``` +### Applying Salt states + +A ````pwd`/srv/salt``` directory has been created during the startup of the `saltmaster` container. Place your SLS state definition in it. + +An example follows: + +```bash +% cat srv/salt/tmux.sls +``` + +```yaml +tmux: + pkg.installed +``` + +Now you can apply the state file to your minions: + +```bash +docker exec saltmaster /bin/sh -c "salt '*' state.apply tmux" +``` + +``` +01660b061c25: +---------- + ID: tmux + Function: pkg.installed + Result: True + Comment: The following packages were installed/updated: tmux + Started: 08:25:58.492203 + Duration: 9655.747 ms + Changes: + ---------- + libevent-2_0-5: + ---------- + new: + 2.0.21-6.4 + old: + tmux: + ---------- + new: + 2.2-1.3 + old: + +Summary for 01660b061c25 +------------ +Succeeded: 1 (changed=1) +Failed: 0 +------------ +Total states run: 1 +Total run time: 9.656 s +``` + ## Caveats and security * `saltstack-master` exposes port `8000/tcp` (**NO SSL**) in order to consume `salt-api` via its HTTP interface. @@ -100,3 +152,5 @@ docker exec saltmaster /bin/sh -c "salt '*' cmd.run 'uname -a'" * `saltstack-master` works with PAM authentication module. A `saltdev` user (password: `saltdev`) has been added to the container. + +* You must be `root` to write files in `/srv/salt` in the container host.