Jika Anda memerlukan nol atau lebih spasi putih setelah karakter '#', berikut ini sudah cukup:
- name: Uncomment line from /etc/ssh/sshd_config
lineinfile:
dest: /etc/ssh/sshd_config
regexp: '^#\s*AuthorizedKeysFile.*$'
line: 'AuthorizedKeysFile .ssh/authorized_keys'
Modifikasi kode asli Anda adalah penambahan \s*
dan .*$
di regex.
Penjelasan:
\s
- cocok dengan spasi putih (spasi, tab, jeda baris, dan umpan formulir)
*
- menentukan ekspresi di sebelah kirinya (\s
) dapat memiliki nol atau lebih instance dalam sebuah kecocokan
.*
- cocok dengan nol atau lebih karakter apa pun
$
- cocok dengan akhir baris
Pertama, Anda menggunakan bahasa yang salah. Dengan Ansible, Anda tidak memberi tahu apa yang harus dilakukan, tetapi menentukan keadaan yang diinginkan. Jadi seharusnya tidak Uncomment line form /etc/ssh/sshd_config
, tapi Ensure AuthorizedKeysFile is set to .ssh/authorized_keys
.
Kedua, tidak masalah apa status awalnya (apakah baris tersebut dikomentari, atau tidak). Anda harus menentukan satu string unik yang mengidentifikasi garis.
Dengan sshd_config
ini dimungkinkan sebagai AuthorizedKeysFile
direktif hanya terjadi sekali dalam file. Dengan file konfigurasi lain, ini mungkin lebih sulit.
- name: Ensure AuthorizedKeysFile is set to .ssh/authorized_keys
lineinfile:
dest: /etc/ssh/sshd_config
regexp: AuthorizedKeysFile
line: 'AuthorizedKeysFile .ssh/authorized_keys'
Itu akan cocok dengan baris apa pun yang berisi AuthorizedKeysFile
string (tidak peduli apakah itu dikomentari atau tidak, atau berapa banyak spasi yang ada) dan pastikan baris lengkapnya adalah:
AuthorizedKeysFile .ssh/authorized_keys
Jika garisnya berbeda, Ansible akan melaporkan status "berubah".
Pada proses kedua, Ansible akan menemukan AuthorizedKeysFile
lagi dan temukan baris tersebut sudah dalam status yang diinginkan, sehingga akan mengakhiri tugas dengan status "ok".
Satu peringatan dengan tugas di atas adalah jika salah satu baris berisi komentar seperti komentar yang nyata dan disengaja (misalnya penjelasan dalam bahasa Inggris yang berisi string AuthorizedKeysFile
), Kemungkinan akan mengganti baris itu dengan nilai yang ditentukan dalam line
.