JC-*_*JC- 5 ansible ansible-playbook
我从手册中复制粘贴了它,但它在我的剧本(2.0.2 版)中失败了:
- service: name=network state=restarted args=eth0
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
"msg": "Failed to stop eth0.service: Unit eth0.service not loaded.\nFailed to start eth0.service: Unit eth0.service failed to load: No such file or directory.\n"}
Run Code Online (Sandbox Code Playgroud)
请问正确的语法是什么?
就这样做(@nasr 已经评论过):
- name: Restart network
service:
name: network
state: restarted
Run Code Online (Sandbox Code Playgroud)
但是,如果您在重新启动之前更改网络配置,则重新启动后,诸如 IP 地址之类的内容会因连接丢失(IP 地址已更改)而挂起。
有一种方法可以把事情做好。
任务.yml
- name: net configuration step 1
debug:
msg: we changed some files
notify: restart systemd-networkd
- name: net configuration step 2
debug:
msg: do some more work, but restart net services only once
notify: restart systemd-networkd
Run Code Online (Sandbox Code Playgroud)
处理程序.yml
- name: restart systemd-networkd
systemd:
name: systemd-networkd
state: restarted
async: 120
poll: 0
register: net_restarting
- name: check restart systemd-networkd status
async_status:
jid: "{{ net_restarting.ansible_job_id }}"
register: async_poll_results
until: async_poll_results.finished
retries: 30
listen: restart systemd-networkd
Run Code Online (Sandbox Code Playgroud)
根据Ansible 2.7.8。您必须进行以下更改才能重新启动网络。
注意:我在 Ubuntu 16.04 上尝试过这个
场景一:仅网络重启
- name: Restarting Network to take effect new IP Address
become: yes
service:
name: networking
state: restarted
Run Code Online (Sandbox Code Playgroud)
场景2:刷新接口然后重新启动网络
- name: Flushing Interface
become: yes
shell: sudo ip addr flush "{{net_interface}}"
- name: Restarting Network
become: yes
service:
name: networking
state: restarted
Run Code Online (Sandbox Code Playgroud)
注意:确保您已
net_interface
配置并导入到执行此 Ansible 任务的文件中。
输出
请查看我在屏幕上收到的以下输出。
归档时间: |
|
查看次数: |
9982 次 |
最近记录: |