Ansible: Как обновить файл, который открывается в редакторе vim при запуске команды - PullRequest
0 голосов
/ 20 апреля 2020

Мне нужно обновить файл, используя ansible. В ручном процессе обновления, когда запускается команда редактирования, файл открывается в редакторе, таком как vim, nano et c, где изменения обновляются и сохраняются.

, т. Е. После выполнения следующей команды, временный файл открывается в редакторе, указанном в команде, sudo OC_EDITOR="nano" oc edit configmap/webconsole-config -n openshift-web-console

Обратите внимание, что при каждом запуске команды содержимое открывается в новых временных файлах. После обновления изменений файл сохраняется в контейнере docker.

Поскольку в приведенной выше команде редактор указан как nano, содержимое файла открывается в редакторе nano с содержимым следующим образом:

# Please edit the object below. Lines beginning with a '#' will be ignored,
# and an empty file will abort the edit. If an error occurs while saving this file will be
# reopened with the relevant failures.
apiVersion: v1
data:
  webconsole-config.yaml: |
    apiVersion: webconsole.config.openshift.io/v1
    clusterInfo:
      adminConsolePublicURL: https://console.router.default.svc.cluster.local/
      consolePublicURL: https://master.novalocal:8443/console/
      masterPublicURL: https://master.novalocal:8443
    extensions:
      properties: {}
      scriptURLs: []
      stylesheetURLs:[]
    features:
      clusterResourceOverridesEnabled: false
      inactivityTimeoutMinutes: 0
.
.
.

Здесь stylesheetURLs необходимо обновить в файле следующим образом:

.
.
      scriptURLs: []
      stylesheetURLs:
      - http://127.0.0.1:30296/css/logo.css
    features:
      clusterResourceOverridesEnabled: false
.
.
.

Здесь stylesheetURLs необходимо обновить с отступом, как указано выше, и с отступом другое содержимое должно быть сохранено.

Как этого достичь в ansible playbook?

Дополнительная информация: Цель этого - обновить веб-консоль lo go из okd / openshift 3.11, ссылка: https://docs.okd.io/3.11/install_config/web_console_customization.html

1 Ответ

2 голосов
/ 21 апреля 2020

Вы задаете не тот вопрос. Цель не в том, «как отключить $EDITOR», а в том, как «отредактировать конфиги и затем повторно apply их», что именно то, что kubectl edit oc edit делает для вас : oc get -o yaml -n openshift-web-console configmap/webconsole-config > $TMPDIR/some-file.yaml && $EDITOR $TMPDIR/some-file.yaml && oc -n openshift-web-console apply -f $TMPDIR/some-file.yaml && rm $TMPDIR/some-file.yaml

Вы найдете целый механизм с механизмом ansible, который позволяет очень точно изменять содержимое текстового файла, поэтому просто воспроизведите это в своей пьесе, без «нано» требуется

- set_fact:
    my_temp_path: /tmp/some-random-filename.yaml
- shell: >-
    oc get -o yaml -n openshift-web-console 
    configmap/webconsole-config >{{ my_temp_path }}
- lineinfile:
     path: '{{ my_temp_path }}'
     # whatever else
- command: oc -n openshift-web-console apply -f {{ my_temp_path }}
- file:
    path: '{{ my_temp_path }}'
    state: absent
...