diff --git a/README.rst b/README.rst index a01932f..c61eb0c 100644 --- a/README.rst +++ b/README.rst @@ -35,6 +35,12 @@ Install a syndic. Install salt cloud. +``salt.ssh`` +------------ + +Install salt-ssh with roster file. +Configure pillar data under salt:ssh_roster to feed the template. + ``Configuration`` ================= Every option available in the templates can be set in pillar. Settings under 'salt' will be overridden by more specific settings under ``salt['master']``, ``salt['minion']`` or ``salt['cloud']`` diff --git a/pillar.example b/pillar.example index 48f9956..1baebc6 100644 --- a/pillar.example +++ b/pillar.example @@ -45,6 +45,12 @@ salt: reactor: - 'deploy': - /srv/salt/reactors/deploy.sls + ssh_roster: + prod1: + host: host.example.com + user: ubuntu + sudo: True + priv: /etc/salt/ssh_keys/sshkey.pem salt_cloud_certs: aws: diff --git a/salt/files/roster.jinja b/salt/files/roster.jinja new file mode 100644 index 0000000..32429f9 --- /dev/null +++ b/salt/files/roster.jinja @@ -0,0 +1,12 @@ +# +# This file is managed by Salt! Do not edit by hand! +# +{%- set roster = salt['pillar.get']('salt:ssh_roster') -%} +{%- if roster %} + {%- for host, options in roster.items() %} +{{ host }}: + {%- for k, v in options.items() %} + {{ k }}: {{ v }} + {%- endfor %} + {% endfor %} +{%- endif -%} diff --git a/salt/package-map.jinja b/salt/package-map.jinja index 243d12d..38f3888 100644 --- a/salt/package-map.jinja +++ b/salt/package-map.jinja @@ -2,27 +2,33 @@ 'Debian': {'salt-master': 'salt-master', 'salt-minion': 'salt-minion', 'salt-syndic': 'salt-syndic', - 'salt-cloud': 'salt-cloud'}, + 'salt-cloud': 'salt-cloud', + 'salt-ssh': 'salt-ssh'}, 'Ubuntu': {'salt-master': 'salt-master', 'salt-minion': 'salt-minion', 'salt-syndic': 'salt-syndic', - 'salt-cloud': 'salt-cloud'}, + 'salt-cloud': 'salt-cloud', + 'salt-ssh': 'salt-ssh'}, 'CentOS': {'salt-master': 'salt-master', 'salt-minion': 'salt-minion', 'salt-syndic': 'salt-syndic', - 'salt-cloud': 'salt-cloud'}, + 'salt-cloud': 'salt-cloud', + 'salt-ssh': 'salt-ssh'}, 'Amazon': {'salt-master': 'salt-master', 'salt-minion': 'salt-minion', 'salt-syndic': 'salt-syndic', - 'salt-cloud': 'salt-cloud'}, + 'salt-cloud': 'salt-cloud', + 'salt-ssh': 'salt-ssh'}, 'Fedora': {'salt-master': 'salt-master', 'salt-minion': 'salt-minion', 'salt-syndic': 'salt-syndic', - 'salt-cloud': 'salt-cloud'}, + 'salt-cloud': 'salt-cloud', + 'salt-ssh': 'salt-ssh'}, 'RedHat': {'salt-master': 'salt-master', 'salt-minion': 'salt-minion', 'salt-syndic': 'salt-syndic', - 'salt-cloud': 'salt-cloud'}, + 'salt-cloud': 'salt-cloud', + 'salt-ssh': 'salt-ssh'}, 'Gentoo': {'salt-master': 'app-admin/salt', 'salt-minion': 'app-admin/salt', 'salt-syndic': 'app-admin/salt', diff --git a/salt/ssh.sls b/salt/ssh.sls new file mode 100644 index 0000000..2f6aece --- /dev/null +++ b/salt/ssh.sls @@ -0,0 +1,13 @@ +{% from "salt/package-map.jinja" import pkgs with context %} + +ensure salt-ssh is installed: + pkg.installed: + - name: {{ pkgs['salt-ssh'] }} + +ensure roster config: + file.managed: + - name: {{ pkgs.get('config_path', '/etc/salt') }}/roster + - source: salt://salt/files/roster.jinja + - template: jinja + - require: + - pkg: ensure salt-ssh is installed