| 1 | == Configuration Management in ORBIT and WINLAB == |
| 2 | |
| 3 | We are currently using saltstack to push configuration changes to servers. This is a server/client model, with the salt-minion running on clients, and salt-master on the central servr. |
| 4 | |
| 5 | Clients find the master via looking for 'salt' in DNS, by default, and can be otherwise configured in a multitude of ways. |
| 6 | Currently, 'salt' resolves to salt.winlab.rutgers.edu or salt.orbit-lab.org, and both are CNAMES for interfaces of remote-l, which exists in both networks. |
| 7 | |
| 8 | After finding the master, the minion performs a key exchange. Further communication is done via encrypted message broker traffic over tcp, using the ZMQ protocol. |
| 9 | |
| 10 | === File structure and layout === |
| 11 | We are using salt 'states' and 'pillars'. States describe a desired configuration, e.g., this package is installed, these files are present, this user has these properties, etc. Pillars contain more specific configurations in key-value pairs, or YAML more generally. |
| 12 | |
| 13 | States reference pillars, so instead of configuring PAM to refer to ldap.orbit, the specific string would be pulled in as needed. TODO: Syntax reference. |
| 14 | |
| 15 | Importantly, information in the 'state' files are available to ALL clients, as it represents potential commands to run. |
| 16 | Conversely, information in the 'pillar' files are ONLY available to the clients targeted. Other clients will see either nothing, or a default value. |
| 17 | |
| 18 | States and pillars are each targeted to clients via a 'top' file. This contains a list of matching rules, and state IDs. |
| 19 | For example: |
| 20 | {{{ |
| 21 | base: |
| 22 | external*.orbit-lab.org: |
| 23 | - ssh.present |
| 24 | }}} |
| 25 | |
| 26 | This top file would target all clients with a name matching external*.orbit-lab.org, and have them execute the state ssh.present, from the tree for enviroment 'base' |
| 27 | |
| 28 | Our current structure is as follows: |
| 29 | {{{ |
| 30 | /srv |
| 31 | /pillar |
| 32 | /base |
| 33 | top.sls |
| 34 | /orbit |
| 35 | /winlab |
| 36 | /salt |
| 37 | /base |
| 38 | top.sls |
| 39 | /orbit |
| 40 | /winlab |
| 41 | }}} |
| 42 | |