gpt4 book ai didi

Ansible playbook 处理程序未通过通知语句启动服务

转载 作者:行者123 更新时间:2023-12-04 10:17:59 26 4
gpt4 key购买 nike

我不明白或看到我做错了什么,但似乎我无法让我的 ansible playbook 在 ubuntu 服务器上启动 rng-tools 服务。

environment:
remote server (configured): Ubuntu 14.04.1 LTS
server with playbook: Debian GNU/Linux 7.6 (wheezy)
> apt-cache policy ansible
ansible:
Installed: 1.7-0.git201406241728~unstable
Candidate: 1.7-0.git201406241728~unstable
Version table:
*** 1.7-0.git201406241728~unstable 0
100 /var/lib/dpkg/status

我的文件夹结构如下:
tasks/main.yml
tasks/packages.yml that is included from the main.yml file
handlers/main.yml
files/rng-tools

我正在使用我的剧本安装包 rng-tools 并在执行后安装它。
- name: install common packages
apt: name={{ item }} state=present
with_items:
- gnupg
- rng-tools
- reprepro
- dpkg-sig
- nginx

是的,我正在安装多个软件包,但它们都安装正确。

安装后,我使用以下命令复制/etc/default/rng-tools 文件:
- name: copy urandom default conf file
copy: src="rng-tools" dest="/etc/default/rng-tools"
notify: start rng-tools

你可以注意到我写了 notify: restart rng-tools那里开始服务。

我的 handlers/main.yml 文件看起来像:
---
# Handler for rng-tools
- name: start rng-tools
service: name=rng-tools state=started

- name: restart rng-tools
service: name=rng-tools state=restarted

- name: stop rng-tools
service: name=rng-tools state=stopped

- name: reload rng-tools
service: name=rng-tools state=reloaded

运行剧本的日志产生以下内容:
TASK: [debian-repository | install common packages] ***************************
ok: [debian.home.dr] => (item=gnupg,rng-tools,reprepro,dpkg-sig,nginx) => {"changed": false, "item": "gnupg,rng-tools,reprepro,dpkg-sig,nginx"}

TASK: [debian-repository | copy urandom default conf file] ********************
ok: [debian.home.dr] => {"changed": false, "dest": "/etc/default/rng-tools", "gid": 0, "group": "root", "md5sum": "45ed1b1ee174494442296fdd262f3b09", "mode": "0644", "owner": "root", "path": "/etc/default/rng-tools", "size": 815, "state": "file", "uid": 0}

PLAY RECAP ********************************************************************
debian.home.dr : ok=12 changed=2 unreachable=0 failed=0

问题是该服务从未启动,我用
sudo ps aux | grep rng
root 29392 0.0 0.0 11740 884 pts/1 S+ 22:45 0:00 grep rng

而当我这样做时 sudo service rng-tools start它开始加上我可以看到进程运行良好。
~:sudo service rng-tools start
Starting Hardware RNG entropy gatherer daemon: rngd.
~:sudo ps aux | grep rng
root 29431 0.0 0.0 8964 336 ? Ss 22:47 0:00 /usr/sbin/rngd -r /dev/urandom
root 29433 0.0 0.0 11740 880 pts/1 S+ 22:47 0:00 grep rng

我尝试了很多事情,比如评论除一个之外的所有处理程序。如果我在复制文件后输入命令类型并且该命令启动服务运行的服务,那么它似乎不是权限问题,但不知何故我无法弄清楚。
另外使用 handlers/main.yml 在 best practice guide 中所以我相信我做对了。

你知道为什么我不能使用剧本开始吗?

最佳答案

changed:false是解开这个谜团的关键:

TASK: [debian-repository | copy urandom default conf file] ********************
ok: [debian.home.dr] => {"changed": false, "dest": "/etc/default/rng-tools", "gid": 0, "group": "root", "md5sum": "45ed1b1ee174494442296fdd262f3b09", "mode": "0644", "owner": "root", "path": "/etc/default/rng-tools", "size": 815, "state": "file", "uid": 0}

“通知:已启动”仅在文件复制发生时调用。

关于Ansible playbook 处理程序未通过通知语句启动服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24901112/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com