Политика 2.2+ Установка Сертификатов

Костюков Владимир

Команда форума
Админ
Регистрация
04.03.23
Сообщения
401
Реакции
62
Код:
{% if user is not defined %}
  {% set user = salt['pillar.get']("user") %}
{% endif %}
{% if salt['pillar.get']('aldpro-users:'+ user) is defined %}
  {% set homedir = salt['user.info'](user).home %}
  {% set gpo_name = 'rbta_ldap_custom_gp_user_new_root_cert' %}
  {% set gpo = salt['pillar.get']('aldpro-users:'+ user +':'+ gpo_name) %}
  {% if gpo %}
check_libnss3-tools:
  pkg.installed:
    - name: libnss3-tools
    {% if not salt['file.directory_exists'](homedir +'/.pki/nssdb') %}
prepare_dbdir:
  cmd.run:
    - names:
      - mkdir -p {{ homedir }}/.pki/nssdb
      - certutil -d {{ homedir }}/.pki/nssdb -T
    - runas: {{ user }}
    {% endif %}
    {% for args in gpo %}
      {% set src_patch = args.get('cert_name') %}
      {% set filename = salt['file.basename'](src_patch) %}
      {% set certpath = '/usr/local/share/ca-certificates/'+ filename %}
{{ certpath }}:
  file.managed:
    - source: {{ src_patch }}
    - skip_verify: True
      {% set installed = salt['cmd.shell']('[[ $(certutil -d ' + homedir + '/.pki/nssdb -L -n Company-' + filename + ' 2>/dev/null) ]] && echo True || echo False') %}
      {% if installed == 'False' %}
add_cert_{{ filename }}:
  cmd.run:
    - name: certutil -d {{ homedir }}/.pki/nssdb -A -t "TC,," -n "Company-{{ filename }}" -i {{ certpath }}
    - runas: {{ user }}
    - watch:
      - file: {{ certpath }}
      {% endif %}
    {% endfor %}
update_ca_cerificates:
  cmd.run:
    - name: update-ca-certificates
  {% endif %}
{% endif %}
Screenshot_20240517_234804.pngScreenshot_20240517_234945.pngScreenshot_20240517_235304.png
 
Последнее редактирование:
  • Like
Реакции: Aule
Отличный скрипт.
Однако, на текущий момент, озадачен вопросом установки неведомого количества корневых сертификатов на компьютер.
Не могу придумать, как считать содержимое некоего каталога на http, ну или считать некий файл index.txt с http, потом построчно считать из него весь список имён файлов, лежащих тут же рядом, ну и затем уже каждый файл скачать и разместить в нужном каталоге на minion

Владимир, вы как профессионал, не подскажете ли механизм. Считать по пути http весь список файлов там расположенных или как считать один файл и распарсить его построчно?
 
оно конечно понятно, + и так 10-20-30 раз ... только вот вопрос я задавал несколько иной :)
 
Костюков Владимир,
{% for filename in <список файлов> %}
<команда установки одного сертификата>
{% endfor %}
эта конструкция работает, проблема в составлении списка файлов, про который я и спрашивал изначально:
Владимир, вы как профессионал, не подскажете ли механизм. Считать по пути http весь список файлов там расположенных или как считать один файл и распарсить его построчно?
вы в своём скрипте делаете почти тоже самое, только считываете список параметров и потом в цикле каждый сертификат обрабатываете.

Администрировать список параметров, выяснять есть ли там уже нужный сертификат или нет, лично мне неудобно, их ведь может быть не 2 и не 3. Поэтому родилась идея - вести некий файлик со списком имен сертификатов, что удобнее для сверки проверки и т.д., и этот файл передавать в политику, чтобы там из него считывались все строки, содержащие, например, полные пути ко всем сертификатам, и в цикле их установить
 
Последнее редактирование:
Подскажите при сохранении кода выскакивает ошибка. Что может быть?
1735022093436.png
 
Назад
Сверху Снизу