Saya menulis buku pedoman yang menginstal dan mengonfigurasi Google Authenticator per pengguna.
Saya ingin langkah terakhir playbook ke cat
file konfigurasi google_authenticator.
Menggunakan modul "debug" saya bisa mendapatkan data untuk ditampilkan di layar tetapi hanya sebagai pesan debug:
TASK: [debug var=details.stdout_lines] ****************************************
ok: [localhost] => {
"details.stdout_lines": [
"ZKMFTE2ADYA2OYCH",
"\"RATE_LIMIT 3 30",
"\" DISALLOW_REUSE",
"\" TOTP_AUTH",
"12920994",
"88224784",
"69464205",
"38144121",
"45634120"
]
}
Saya membaca online bahwa saya dapat melakukan sesuatu seperti itu:
- name: Print to screen google authenticator details
command: /bin/cat {{ google_authenticator_secret_file_location }}
register: details
tags: google_2fa_user
- debug: msg="{{ details.stdout_lines }}"
Tapi saya mendapatkan kesalahan saat menjalankannya:
TASK: [Print to screen google authenticator details] **************************
changed: [localhost]
TASK: [debug msg="{{details.stdout_lines}}"] **********************************
fatal: [localhost] => Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/ansible/runner/__init__.py", line 532, in _executor
exec_rc = self._executor_internal(host, new_stdin)
File "/usr/lib/python2.7/dist-packages/ansible/runner/__init__.py", line 629, in _executor_internal
return self._executor_internal_inner(host, self.module_name, self.module_args, inject, port, complex_args=complex_args)
File "/usr/lib/python2.7/dist-packages/ansible/runner/__init__.py", line 815, in _executor_internal_inner
result = handler.run(conn, tmp, module_name, module_args, inject, complex_args)
File "/usr/lib/python2.7/dist-packages/ansible/runner/action_plugins/debug.py", line 41, in run
kv = utils.parse_kv(module_args)
File "/usr/lib/python2.7/dist-packages/ansible/utils/__init__.py", line 526, in parse_kv
vargs = [x.decode('utf-8') for x in shlex.split(args, posix=True)]
File "/usr/lib/python2.7/shlex.py", line 279, in split
return list(lex)
File "/usr/lib/python2.7/shlex.py", line 269, in next
token = self.get_token()
File "/usr/lib/python2.7/shlex.py", line 96, in get_token
raw = self.read_token()
File "/usr/lib/python2.7/shlex.py", line 172, in read_token
raise ValueError, "No closing quotation"
ValueError: No closing quotation
FATAL: all hosts have already failed -- aborting
PLAY RECAP ********************************************************************
Kesalahan mengatakan: "Tidak ada kutipan penutup" meskipun dikutip. Juga mencoba:
- debug: msg= "{{ details.stdout_lines }}"
Adakah yang tahu apa masalahnya?
sumber
Saya telah melihat mendalam melalui internet dan memeriksa dengan beberapa profesional yang mungkin.
Sejauh yang saya mengerti, tidak ada opsi seperti itu di An 1.8 untuk mengarahkan output dari perintah ke layar sebagai output normal daripada output debug.
sumber
Saya menjalankan beberapa tes pada blok teks yang Anda miliki di atas - menjatuhkannya ke tempatnya dan membersihkan json quotes yang ditambahkan dengan menggunakan details.stdout_lines.
Jika teks 'buruk' dalam file auth Anda selalu menjadi yang utama
\"
, maka ini (diuji) kebetulan bekerja, menghasilkan banyak output yang sama tetapi dengan titik dua di tempat ini dari satu string.Sekarang ini adalah kasus penggunaan yang sangat terbatas, tetapi jika output auth google didefinisikan secara ketat di sini (dan sangat mungkin itu terjadi), maka ini harus melakukan apa yang Anda inginkan.
Namun, itu masih akan lebih mudah, dan lebih baik digunakan
var=details.stdout_lines
untuk hanya mendapatkan konten di sini.sumber