--- - name: Install iSCSI dependencies ansible.builtin.package: name: - open-iscsi - util-linux - xfsprogs state: present tags: - iscsi - iscsi_login - iscsi_storage - name: Ensure iscsid enabled ansible.builtin.service: name: iscsid state: started enabled: true tags: - iscsi - iscsi_login - iscsi_storage - name: Check if k3s systemd unit exists ansible.builtin.stat: path: /etc/systemd/system/k3s.service register: _k3s_unit tags: - iscsi - iscsi_login - iscsi_storage - name: Check if k3s-agent systemd unit exists ansible.builtin.stat: path: /etc/systemd/system/k3s-agent.service register: _k3s_agent_unit tags: - iscsi - iscsi_login - iscsi_storage - name: Ensure k3s stops/restarts before open-iscsi (systemd drop-in) block: - name: Ensure k3s.service.d exists ansible.builtin.file: path: /etc/systemd/system/k3s.service.d state: directory mode: "0755" - name: Install k3s open-iscsi ordering drop-in ansible.builtin.copy: dest: /etc/systemd/system/k3s.service.d/open-iscsi.conf mode: "0644" content: | [Unit] Wants=open-iscsi.service After=open-iscsi.service PartOf=open-iscsi.service notify: - reload systemd when: _k3s_unit.stat.exists | default(false) tags: - iscsi - iscsi_login - iscsi_storage - name: Ensure k3s-agent stops/restarts before open-iscsi (systemd drop-in) block: - name: Ensure k3s-agent.service.d exists ansible.builtin.file: path: /etc/systemd/system/k3s-agent.service.d state: directory mode: "0755" - name: Install k3s-agent open-iscsi ordering drop-in ansible.builtin.copy: dest: /etc/systemd/system/k3s-agent.service.d/open-iscsi.conf mode: "0644" content: | [Unit] Wants=open-iscsi.service After=open-iscsi.service PartOf=open-iscsi.service notify: - reload systemd when: _k3s_agent_unit.stat.exists | default(false) tags: - iscsi - iscsi_login - iscsi_storage - name: Ensure open-iscsi systemd override directory exists ansible.builtin.file: path: /etc/systemd/system/open-iscsi.service.d state: directory mode: "0755" tags: - iscsi - iscsi_login - iscsi_storage - name: Install open-iscsi retry-on-boot override ansible.builtin.copy: dest: /etc/systemd/system/open-iscsi.service.d/retry-on-boot.conf mode: "0644" content: | [Unit] Wants=network-online.target iscsid.service After=network-online.target iscsid.service [Service] Restart=on-failure RestartSec=10s StartLimitIntervalSec=120 StartLimitBurst=10 notify: - reload systemd - restart open-iscsi tags: - iscsi - iscsi_login - iscsi_storage - name: Apply open-iscsi override immediately (if changed) ansible.builtin.meta: flush_handlers tags: - iscsi - iscsi_login - iscsi_storage - name: Ensure open-iscsi enabled ansible.builtin.systemd: name: open-iscsi enabled: true tags: - iscsi - iscsi_login - iscsi_storage - name: Discover iSCSI targets ansible.builtin.command: >- iscsiadm -m discovery -t st -p {{ iscsi_portal }} register: _iscsi_discovery changed_when: false tags: - iscsi - iscsi_discovery - iscsi_login - iscsi_storage - name: Configure and login iSCSI targets ansible.builtin.include_tasks: iscsi_target.yml loop: "{{ iscsi_targets | default([]) }}" loop_control: loop_var: t label: "{{ t.iqn | default('') }}" tags: - iscsi - iscsi_login - iscsi_storage