Я новичок в использовании Ansible-Playbooks, и у меня возникают проблемы с принятием лицензионных соглашений с Splunk.
Каждый раз, когда я запускаю оболочку:
"/opt/splunkforwarder/bin/splunk start --accept-license --answer-yes"
Я получаю непрерывную блокировку, которая заставляет меня завершить программу.
TASK [acceptlicense] ****************************************************************************************************************
^C
Зайдя в коробку и запустив команду вручную мне говорят следующее:
[root@##########-lab_env]# /opt/splunkforwarder/bin/splunk start --accept-license --answer-yes
This appears to be your first time running this version of Splunk.
Create credentials for the administrator account.
Characters do not appear on the screen when you type the password.
Password must contain at least:
* 8 total printable ASCII character(s).
Please enter a new password:
Я просмотрел несколько онлайн-форумов, которые помогают ответить, что делать, когда я встречаю такие конкретные подсказки, но каждый раз, когда я вношу коррективы, мне говорят что-то вроде:
ERROR! '_______' is not a valid attribute for a Task
На данный момент я довольно застрял и не знаю, как продолжить.
Мой фрагмент кода выглядит следующим образом:
- hosts: "{{hostName}}"
become: true
become_user: root
become_method: sudo
tasks:
- name: copy_splunk
shell: cp splunkforwarder-7.1.3-51d9cac7b837-linux-2.6-x86_64.rpm /opt/.; date; ls -l /opt
args:
chdir: /tmp
register: run_ll
- debug: var=run_ll.stdout_lines
- name: install rpm package
shell: rpm -ivh splunkforwarder-7.1.3-51d9cac7b837-linux-2.6-x86_64.rpm
args:
chdir: /tmp
ignore_errors: True
register: install_rpm
- debug: var=install_rpm.stdout_lines
- name: acceptlicense
tags:
- install
shell: /opt/splunkforwarder/bin/splunk start --accept-license --answer-yes
register: accept_l
- debug: var=accept_l.stdout_lines
Раньше я делал только пару сборников, так что эта ошибка для меня нова.
У кого-нибудь есть понимание?
Вы должны посмотреть на файл ожидаемый модуль. Это позволит вам выполнять команды и отвечать на соответствующие запросы.
Это не очень хорошо задокументировано Splunk, но есть два способа сделать это.
1) Введите пароль в командной строке. splunk start --accept-license --answer-yes --no-prompt --seed-passwd <passwd>
.
2) Создайте файл $SPLUNK_HOME/etc/system/local/user-seed.conf.
[user_info]
USERNAME = admin
PASSWORD = <password>
Затем запустите Splunk:
splunk start --accept-license --answer-yes --no-prompt
Успех! Спасибо!
Основываясь на ответе RichG, вот задачи Ansible, которые я использовал для этой работы.
- hosts: all
tasks:
- name: create a random password
ansible.builtin.shell: date +%s | sha256sum | base64 | head -c 32 ; echo
register: _splunk_password
changed_when: false
- name: hash the random password
ansible.builtin.command:
argv:
- /opt/splunkforwarder/bin/splunk
- "hash-passwd"
- "{{ _splunk_password.stdout }}"
register: _splunk_hashed_password
changed_when: false
- name: create the user-seed config file
ansible.builtin.template:
src: user-seed.conf.j2
dest: /opt/splunkforwarder/etc/system/local/user-seed.conf
owner: root
group: root
mode: 0640
become: yes
- name: accept the license
ansible.builtin.shell:
argv:
- /opt/splunkforwarder/bin/splunk
- start
- "--accept-license"
- "--answer-yes"
- "--no-prompt"
become: yes
А файл user-seed.conf.j2 выглядит следующим образом:
#
# {{ ansible_managed }}
#
[user_info]
USERNAME = admin
HASHED_PASSWORD = {{ _splunk_hashed_password.stdout }}