นี่คือสิ่งที่ฉันพยายามทำให้สำเร็จ
ฉันมีสถานะเกลือที่จัดการผู้ใช้และกลุ่มใน linux, เทมเพลต /etc/skel และจะจัดการเทมเพลตอื่น ๆ ที่เกี่ยวข้องกับผู้ใช้อีกมากมายในภายหลัง
ในระยะสั้น:
บางสถานะถูกสร้างขึ้นจากการอ่านเสาหลักที่มีผู้ใช้และคุณสมบัติอยู่ใน for loop
บางรัฐถูกสร้างขึ้นจากการอ่านเสาหลักที่มีกลุ่มและคุณสมบัติ
จะมีกลุ่มที่เป็นกลุ่มหลักสำหรับผู้ใช้ ไม่ใช่ทุกกลุ่มที่จะมีผู้ใช้หลัก และผู้ใช้ที่สร้างขึ้นทั้งหมดจะมีกลุ่มหลักที่สร้างขึ้นซึ่งตั้งชื่อตามผู้ใช้ ดูเหมือนว่าจะต้องสร้างกลุ่มด้วยเกลือก่อนที่จะสร้างผู้ใช้ ดังนั้น สำหรับแต่ละสถานะของผู้ใช้ โดยที่สถานะถูกสร้างขึ้นโดยลูป และผู้ใช้ถูกสร้างโดยสถานะนั้น จำเป็นต้องมีกลุ่มที่เกี่ยวข้อง อย่างไรก็ตาม สถานะของกลุ่มไม่มีอยู่แบบคงที่ แต่สถานะกลุ่มก็ถูกสร้างขึ้นแบบไดนามิกจากเสาหลักของกลุ่มด้วย ดังนั้นเกลือไม่จำเป็นต้องแสดงทุกสถานะในลำดับเดียวกันในแต่ละครั้งเนื่องจากการเรียงลำดับตามตัวอักษร แต่ลำดับจะถูกกำหนดหลังจากแก้ไขข้อกำหนดทั้งหมดแล้ว (BTW ฉันพยายามทำให้บทสรุปของการจัดเรียงนี้สั้นและไม่ลงหลุมกระต่ายที่นี่ในหัวข้อการเรนเดอร์เกลือ)
ฉันคิดว่าปัญหาที่ฉันมีคือสถานะกลุ่มไม่ได้ถูกสร้างขึ้นในขณะที่สร้างสถานะผู้ใช้
ฉันได้โพสต์ไว้ด้านล่างสถานะพร้อมกับการกำหนดค่าที่ต้องการซึ่งทำให้เกิดข้อผิดพลาด เมื่อข้อกำหนดมีอยู่ จะไม่สร้างผู้ใช้แต่จะสร้างกลุ่ม เมื่อข้อกำหนดถูกลบออก ก็จะสร้างกลุ่มและผู้ใช้
หากฉันลบบรรทัดที่ต้องการออก ขณะนี้ฉันได้รับผลลัพธ์ที่คาดหวังไว้ แต่ไม่แน่ใจว่าฉันจะได้รับผลลัพธ์ที่คาดหวังในระยะยาวเมื่อสิ่งนี้เติบโตขึ้น
นอกจากนี้ ฉันสนใจอย่างมากในการหาวิธีที่จะต้องการบางสิ่งจากสถานะที่สร้างขึ้นแบบไดนามิกภายในสถานะอื่นที่สร้างขึ้นแบบไดนามิก
แนวคิดใด ๆ ที่นี่เพื่อแก้ไขสิ่งนี้เพื่อแก้ไขปัญหานั้นจะได้รับการชื่นชมเช่นเคยที่นี่ :)
นี่คือไฟล์สถานะ:
/etc/skel:
file.directory:
- name: /etc/skel
- user: root
- group: root
- dir_mode: 755
/etc/skel/.bash_logout:
file.managed:
- name: /etc/skel/.bash_logout
- user: root
- group: root
- mode: 644
- source: salt://user_management/templates/etc/skel/bash_logout.sls
/etc/skel/.bash_profile:
file.managed:
- name: /etc/skel/.bash_profile
- user: root
- group: root
- mode: 644
- source: salt://user_management/templates/etc/skel/bash_profile.sls
/etc/skel/.bashrc:
file.managed:
- name: /etc/skel/.bashrc
- user: root
- group: root
- mode: 644
- source: salt://user_management/templates/etc/skel/bashrc.sls
{% for group in pillar['user_management']['groups'] %}
{{- group }}:
group.present:
- name: "{{ pillar['user_management']['groups'][group]['name'] }}"
- gid: "{{ pillar['user_management']['groups'][group]['gid'] }}"
- system: "{{ pillar['user_management']['groups'][group]['system'] }}"
{%- if pillar['user_management']['groups'][group]['addusers'] %}
- addusers:
{%- for add_user_name in pillar['user_management']['groups'][group]['addusers'] %}
- {{ add_user_name }}
{%- endfor %}
{%- endif %}
{%- if pillar['user_management']['groups'][group]['delusers'] %}
- delusers:
{%- for del_user_name in pillar['user_management']['groups'][group]['delusers'] %}
- {{ del_user_name }}
{%- endfor %}
{%- endif %}
{%- if pillar['user_management']['groups'][group]['members'] %}
- members:
{%- for member_name in pillar['user_management']['groups'][user]['members'] %}
- {{ member_name }}
{%- endfor %}
{%- endif %}
{% endfor %}
{% for user in pillar['user_management']['users'] %}
{{- user }}:
user.present:
- name: "{{ pillar['user_management']['users'][user]['name'] }}"
- uid: "{{ pillar['user_management']['users'][user]['uid'] }}"
- gid: "{{ pillar['user_management']['users'][user]['gid'] }}"
- gid_from_name: "{{ pillar['user_management']['users'][user]['gid_from_name'] }}"
{%- if pillar['user_management']['users'][user]['groups'] %}
- groups:
{%- for group_name in pillar['user_management']['users'][user]['groups'] %}
- {{ group_name }}
{%- endfor %}
{%- endif %}
{%- if pillar['user_management']['users'][user]['optional_groups'] %}
- optional_groups:
{%- for optional_group_name in pillar['user_management']['users'][user]['optional_groups'] %}
- {{ optional_group_name }}
{%- endfor %}
{%- endif %}
{%- if pillar['user_management']['users'][user]['remove_groups'] %}
- remove_groups:
{%- for remove_group_name in pillar['user_management']['users'][user]['remove_groups'] %}
- {{ remove_group_name }}
{%- endfor %}
{%- endif %}
- home: "{{ pillar['user_management']['users'][user]['home'] }}"
- createhome: "{{ pillar['user_management']['users'][user]['createhome'] }}"
- password: "{{ pillar['user_management']['users'][user]['password'] }}"
- enforce_password: "{{ pillar['user_management']['users'][user]['enforce_password'] }}"
- empty_password: "{{ pillar['user_management']['users'][user]['empty_password'] }}"
- shell: "{{ pillar['user_management']['users'][user]['shell'] }}"
- unique: "{{ pillar['user_management']['users'][user]['unique'] }}"
- system: "{{ pillar['user_management']['users'][user]['system'] }}"
- fullname: "{{ pillar['user_management']['users'][user]['fullname'] }}"
- require:
- group: {{ user|replace("user", "group") }}
{% endfor %}
นี่คือไฟล์เสาหลักของผู้ใช้:
user_management:
users:
user_mdresden:
name: mdresden
uid: 10000
gid: 10000
gid_from_name: True
groups:
- wheel
optional_groups:
- users
remove_groups:
# - list
home: /home/mdresden
createhome: True
password: '$6$wBMXk1u6Jxapb5GR$o4YckBYhVjZZ28vyOkcPwBLMH2tcgWAPqdqzLLOGGY5DCM1aaz/rNfnjpMdcmE4GFt/5dzwu8z3YXViptLTMT/'
enforce_password: True
empty_password: False
shell: "/bin/bash"
unique: True
system: False
fullname: "Matthew Dresden"
user_csunderarajulu:
name: csunderarajulu
uid: 10001
gid: 10001
gid_from_name: True
groups:
# - list
optional_groups:
- users
remove_groups:
# - list
home: /home/csunderarajulu
createhome: True
password: '$6$wBMXk1u6Jxapb5GR$o4YckBYhVjZZ28vyOkcPwBLMH2tcgWAPqdqzLLOGGY5DCM1aaz/rNfnjpMdcmE4GFt/5dzwu8z3YXViptLTMT/'
enforce_password: True
empty_password: False
shell: "/bin/bash"
unique: True
system: False
fullname: "Chandrasekaran Sunderarajulu"
นี่คือไฟล์เสาหลักของกลุ่ม:
user_management:
groups:
group_mdresden:
name: mdresden
gid: 10000
system: False
addusers:
# - list
# - list
delusers:
# - list
# - list
members:
group_csunderarajulu:
name: csunderarajulu
gid: 10001
system: False
addusers:
# - list
# - list
delusers:
# - list
# - list
members:
ดูเหมือนว่าข้อผิดพลาดจะเกิดขึ้นในการใช้งานจริงเท่านั้น ไม่ใช่เมื่อเปิดใช้งานการทดสอบ นี่คือข้อผิดพลาดสำหรับผู้ใช้:
user_|-user_csunderarajulu_|-csunderarajulu_|-present:
----------
__run_num__:
7
__sls__:
user_management.users.manage
changes:
----------
comment:
One or more requisite failed: user_management.users.manage.group_csunderarajulu
result:
False
user_|-user_mdresden_|-mdresden_|-present:
----------
__run_num__:
6
__sls__:
user_management.users.manage
changes:
----------
comment:
One or more requisite failed: user_management.users.manage.group_mdresden
result:
False
นี่คือผลลัพธ์เมื่อฉันลบข้อกำหนด:
user_|-user_csunderarajulu_|-csunderarajulu_|-present:
----------
__run_num__:
7
changes:
----------
fullname:
Chandrasekaran Sunderarajulu
gid:
10001
groups:
- csunderarajulu
- users
home:
/home/csunderarajulu
homephone:
name:
csunderarajulu
passwd:
x
roomnumber:
shell:
/bin/bash
uid:
10001
workphone:
comment:
New user csunderarajulu created
duration:
106.136
name:
csunderarajulu
result:
True
start_time:
20:55:32.687433
user_|-user_mdresden_|-mdresden_|-present:
----------
__run_num__:
6
changes:
----------
fullname:
Matthew Dresden
gid:
10000
groups:
- mdresden
- users
- wheel
home:
/home/mdresden
homephone:
name:
mdresden
passwd:
x
roomnumber:
shell:
/bin/bash
uid:
10000
workphone:
comment:
New user mdresden created
duration:
153.671
name:
mdresden
result:
True
start_time:
20:55:32.532969
แม้ว่ากลุ่มจะถูกสร้างขึ้นได้สำเร็จ แต่ผลลัพธ์จากการสร้างกลุ่มก็แสดงข้อผิดพลาดเช่นกัน
นี่คือผลลัพธ์สำหรับกลุ่มที่แสดงข้อผิดพลาด:
group_|-group_csunderarajulu_|-csunderarajulu_|-present:
----------
__run_num__:
5
changes:
----------
Failed:
----------
gid:
10001
comment:
Group {0} has been created but, some changes could not be applied
duration:
34.491
name:
csunderarajulu
result:
False
start_time:
13:40:14.615013
group_|-group_mdresden_|-mdresden_|-present:
----------
__run_num__:
4
changes:
----------
Failed:
----------
gid:
10000
comment:
Group {0} has been created but, some changes could not be applied
duration:
168.642
name:
mdresden
result:
False
start_time:
13:40:14.445528
นี่คือผลลัพธ์ของ: salt-call --local state.show_sls user_management.users.manage
local:
----------
/etc/skel:
----------
__env__:
base
__sls__:
user_management.users.manage
file:
|_
----------
name:
/etc/skel
|_
----------
user:
root
|_
----------
group:
root
|_
----------
dir_mode:
755
- directory
|_
----------
order:
10000
/etc/skel/.bash_logout:
----------
__env__:
base
__sls__:
user_management.users.manage
file:
|_
----------
name:
/etc/skel/.bash_logout
|_
----------
user:
root
|_
----------
group:
root
|_
----------
mode:
644
|_
----------
source:
salt://user_management/templates/etc/skel/bash_logout.sls
- managed
|_
----------
order:
10001
/etc/skel/.bash_profile:
----------
__env__:
base
__sls__:
user_management.users.manage
file:
|_
----------
name:
/etc/skel/.bash_profile
|_
----------
user:
root
|_
----------
group:
root
|_
----------
mode:
644
|_
----------
source:
salt://user_management/templates/etc/skel/bash_profile.sls
- managed
|_
----------
order:
10002
/etc/skel/.bashrc:
----------
__env__:
base
__sls__:
user_management.users.manage
file:
|_
----------
name:
/etc/skel/.bashrc
|_
----------
user:
root
|_
----------
group:
root
|_
----------
mode:
644
|_
----------
source:
salt://user_management/templates/etc/skel/bashrc.sls
- managed
|_
----------
order:
10003
group_csunderarajulu:
----------
__env__:
base
__sls__:
user_management.users.manage
group:
|_
----------
name:
csunderarajulu
|_
----------
gid:
10001
|_
----------
system:
False
- present
|_
----------
order:
10005
group_mdresden:
----------
__env__:
base
__sls__:
user_management.users.manage
group:
|_
----------
name:
mdresden
|_
----------
gid:
10000
|_
----------
system:
False
- present
|_
----------
order:
10004
user_csunderarajulu:
----------
__env__:
base
__sls__:
user_management.users.manage
user:
|_
----------
name:
csunderarajulu
|_
----------
uid:
10001
|_
----------
gid:
10001
|_
----------
gid_from_name:
True
|_
----------
optional_groups:
- users
|_
----------
home:
/home/csunderarajulu
|_
----------
createhome:
True
|_
----------
password:
$6$wBMXk1u6Jxapb5GR$o4YckBYhVjZZ28vyOkcPwBLMH2tcgWAPqdqzLLOGGY5DCM1aaz/rNfnjpMdcmE4GFt/5dzwu8z3YXViptLTMT/
|_
----------
enforce_password:
True
|_
----------
empty_password:
False
|_
----------
shell:
/bin/bash
|_
----------
unique:
True
|_
----------
system:
False
|_
----------
fullname:
Chandrasekaran Sunderarajulu
|_
----------
require:
|_
----------
group:
group_csunderarajulu
- present
|_
----------
order:
10007
user_mdresden:
----------
__env__:
base
__sls__:
user_management.users.manage
user:
|_
----------
name:
mdresden
|_
----------
uid:
10000
|_
----------
gid:
10000
|_
----------
gid_from_name:
True
|_
----------
groups:
- wheel
|_
----------
optional_groups:
- users
|_
----------
home:
/home/mdresden
|_
----------
createhome:
True
|_
----------
password:
$6$wrBLmNvzyQcHsunt$N6qAv4QR/9A4oPb07zeBbdMQTG7dhxMt.5nXUYY3STwqyRlYvGi5G/GmItOu2M.wLzAOz0ClhEsQIUXMGwIwp1
|_
----------
enforce_password:
True
|_
----------
empty_password:
False
|_
----------
shell:
/bin/bash
|_
----------
unique:
True
|_
----------
system:
False
|_
----------
fullname:
Matthew Dresden
|_
----------
require:
|_
----------
group:
group_mdresden
- present
|_
----------
order:
10006
สร้างชื่อกลุ่มที่ต้องการที่คาดหวัง เช่น group_mdresden ซึ่งเป็นชื่อกลุ่มที่รัฐจัดทำ
state.show_sls
ได้หรือไม่ เราจะเห็นว่าชื่อ ความต้องการ และอื่นๆ... ใดที่สร้างโดยไฟล์สถานะของคุณ - person Christophe Drevet-Droguet   schedule 03.03.2016- requires
? คุณสามารถให้ผู้ใช้กำหนดให้สถานะกลุ่มของพวกเขาถูกรัน และเกลือจะเคารพลำดับนั้น - person Wayne Werner   schedule 03.03.2016group
หรือไม่ - person Christophe Drevet-Droguet   schedule 04.03.2016gid
จะต้องกำหนดเป็นจำนวนเต็ม ไม่ใช่สตริง ฉันก็มีช่วงเวลาที่ยากลำบากเช่นกัน ลองลบเครื่องหมายคำพูดคู่ออกจากคำจำกัดความกลุ่มของคุณgid
ขออภัยที่ตอบช้า. - person Christophe Drevet-Droguet   schedule 29.03.2016