Implement basic LAN client.
This commit is contained in:
parent
ce6bd53319
commit
bbcf45bbeb
7 changed files with 126 additions and 2 deletions
10
minimal-krb5.yml
Normal file
10
minimal-krb5.yml
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
---
|
||||||
|
# This playbook does almost nothing. Useful for testing only preseeding.
|
||||||
|
|
||||||
|
- name: apply a minimal configuration with kerberos LAN integration
|
||||||
|
hosts: all
|
||||||
|
remote_user: ansible
|
||||||
|
become: yes
|
||||||
|
roles:
|
||||||
|
- up2date-debian
|
||||||
|
- lan-client
|
6
roles/lan-client/defaults/main.yml
Normal file
6
roles/lan-client/defaults/main.yml
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
lan_homes: /home/lan
|
||||||
|
ldap_domain: "{{ ansible_domain | default('intern', true) }}"
|
||||||
|
basedn: "{{ 'dc=' + ( ldap_domain | replace('^.','') | replace('.$','') | replace('.',',dc=')) }}"
|
||||||
|
ldap_server: ldap
|
||||||
|
krb_server: kerberos
|
||||||
|
nfs_server: nfs
|
14
roles/lan-client/handlers/main.yml
Normal file
14
roles/lan-client/handlers/main.yml
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
- name: restart sssd
|
||||||
|
service: name=sssd state=restarted enabled=yes
|
||||||
|
listen: "restart sssd"
|
||||||
|
|
||||||
|
- name: reload systemd
|
||||||
|
systemd:
|
||||||
|
daemon_reload: yes
|
||||||
|
listen: "reload systemd"
|
||||||
|
|
||||||
|
- name: restart rpc-gssd
|
||||||
|
systemd:
|
||||||
|
name: rpc-gssd
|
||||||
|
state: restarted
|
||||||
|
notify: "restart rpc-gssd"
|
63
roles/lan-client/tasks/main.yml
Normal file
63
roles/lan-client/tasks/main.yml
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
---
|
||||||
|
- name: preseed krb5-config realm
|
||||||
|
debconf:
|
||||||
|
name: krb5-config
|
||||||
|
question: krb5-config/default_realm
|
||||||
|
value: "{{ ldap_domain | upper }}"
|
||||||
|
vtype: string
|
||||||
|
|
||||||
|
- name: preseed krb5-config kerberos servers
|
||||||
|
debconf:
|
||||||
|
name: krb5-config
|
||||||
|
question: krb5-config/kerberos_servers
|
||||||
|
value: "{{ krb_server }}"
|
||||||
|
vtype: string
|
||||||
|
|
||||||
|
- name: preseed krb5-config admin server
|
||||||
|
debconf:
|
||||||
|
name: krb5-config
|
||||||
|
question: krb5-config/admin_server
|
||||||
|
value: "{{ krb_server }}"
|
||||||
|
vtype: string
|
||||||
|
|
||||||
|
- name: install needed packages
|
||||||
|
apt:
|
||||||
|
name:
|
||||||
|
- krb5-config
|
||||||
|
- krb5-user
|
||||||
|
- sssd-krb5
|
||||||
|
- sssd-ldap
|
||||||
|
- nfs-common
|
||||||
|
state: latest
|
||||||
|
|
||||||
|
- name: provide identities from directory
|
||||||
|
template:
|
||||||
|
src: sssd.conf.j2
|
||||||
|
dest: /etc/sssd/sssd.conf
|
||||||
|
mode: 0600
|
||||||
|
notify: restart sssd
|
||||||
|
|
||||||
|
- name: make sure the home mount directory exists
|
||||||
|
file: path={{ lan_homes }} state=directory recurse=yes
|
||||||
|
|
||||||
|
|
||||||
|
## Activate machine after installation:
|
||||||
|
- name: create machine principal
|
||||||
|
command: kadmin -p root/admin -w {{ lookup('password', '/root/kadmin.pwd') }} -q "addprinc -randkey nfs/{{ ansible_hostname }}.{{ ldap_domain }}"
|
||||||
|
no_log: true
|
||||||
|
when: not run_in_installer|default(false)|bool
|
||||||
|
|
||||||
|
- name: add principal to keytab
|
||||||
|
command: kadmin -p root/admin -w {{ lookup('password', '/root/kadmin.pwd') }} -q "ktadd nfs/{{ ansible_hostname }}.{{ ldap_domain }}"
|
||||||
|
args:
|
||||||
|
creates: /etc/krb5.keytab
|
||||||
|
no_log: true
|
||||||
|
notify: "restart rpc-gssd"
|
||||||
|
when: not run_in_installer|default(false)|bool
|
||||||
|
|
||||||
|
- name: automount
|
||||||
|
lineinfile:
|
||||||
|
dest: /etc/fstab
|
||||||
|
line: "{{ nfs_server}}:/home {{ lan_homes }} nfs4 sec=krb5p,_netdev,noauto,x-systemd.automount,x-systemd.idle-timeout=60 0 0"
|
||||||
|
notify: reload systemd
|
||||||
|
when: not run_in_installer|default(false)|bool
|
24
roles/lan-client/templates/sssd.conf.j2
Normal file
24
roles/lan-client/templates/sssd.conf.j2
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
[sssd]
|
||||||
|
domains = LDAP
|
||||||
|
services = nss, pam
|
||||||
|
config_file_version = 2
|
||||||
|
|
||||||
|
[nss]
|
||||||
|
filter_groups = root
|
||||||
|
filter_users = root
|
||||||
|
|
||||||
|
[pam]
|
||||||
|
|
||||||
|
[domain/LDAP]
|
||||||
|
id_provider = ldap
|
||||||
|
ldap_uri = ldap://{{ ldap_server }}/
|
||||||
|
ldap_search_base = {{ basedn }}
|
||||||
|
|
||||||
|
auth_provider = krb5
|
||||||
|
krb5_server = {{ krb_server }}
|
||||||
|
krb5_realm = {{ ldap_domain | upper }}
|
||||||
|
cache_credentials = true
|
||||||
|
|
||||||
|
min_id = 10000
|
||||||
|
max_id = 20000
|
||||||
|
enumerate = False
|
|
@ -93,6 +93,7 @@
|
||||||
uidNumber: 10000
|
uidNumber: 10000
|
||||||
gidNumber: 10000
|
gidNumber: 10000
|
||||||
homeDirectory: "{{ lan_homes }}/foo"
|
homeDirectory: "{{ lan_homes }}/foo"
|
||||||
|
loginShell: /bin/bash
|
||||||
bind_dn: "cn=admin,{{ basedn }}"
|
bind_dn: "cn=admin,{{ basedn }}"
|
||||||
bind_pw: "{{ ldap_admin_pwd }}"
|
bind_pw: "{{ ldap_admin_pwd }}"
|
||||||
when: foo_pwd is defined
|
when: foo_pwd is defined
|
||||||
|
|
|
@ -29,8 +29,8 @@
|
||||||
dest: /etc/exports
|
dest: /etc/exports
|
||||||
insertbefore: EOF
|
insertbefore: EOF
|
||||||
block: |
|
block: |
|
||||||
{{ export_root }} *(sec=krb5p:krb5i:krb5:sys,rw,fsid=0,crossmnt,no_subtree_check)
|
{{ export_root }} *(sec=krb5p,rw,fsid=0,crossmnt,no_subtree_check)
|
||||||
{{ export_root }}/home/ *(sec=krb5p:krb5i,rw,no_subtree_check)
|
{{ export_root }}/home/ *(sec=krb5p,rw,no_subtree_check)
|
||||||
notify: "restart nfs-kernel-server"
|
notify: "restart nfs-kernel-server"
|
||||||
|
|
||||||
|
|
||||||
|
@ -63,3 +63,9 @@
|
||||||
mode: 0600
|
mode: 0600
|
||||||
notify: restart sssd
|
notify: restart sssd
|
||||||
when: kadmin.stat.exists
|
when: kadmin.stat.exists
|
||||||
|
|
||||||
|
- name: copy home from /etc/skel for dummy user foo
|
||||||
|
shell: cp -r /etc/skel {{ lan_homes }}/foo && chmod -R o-rwx {{ lan_homes }}/foo && chown -R foo:foo {{ lan_homes }}/foo
|
||||||
|
args:
|
||||||
|
creates: "{{ lan_homes }}/foo"
|
||||||
|
when: foo_pwd is defined
|
||||||
|
|
Loading…
Add table
Reference in a new issue