在使用了大约一周的ansible之后,我发现ansible所花费的时间和它应该完成的任务有多复杂,花费的时间也差不多。
虽然我可以使用一个命令轻松地安装20个软件包,
模板需要在循环中运行,所以如果我有20个配置文件要复制,那么需要花费整整一分钟。
将其扩展到10个角色,其中一些角色重复了5次,您可以获得超过一个小时的时间来完成简单的部署。
ansible应该是这么慢,还是我可以做些什么来提高表演水平?
编辑:
根据你的回答,我认为这不是正常的行为。以下是@U880D所要求的一些简单任务的代码示例。正如我所说,没有什么特别的只是简单的吐露:
# tasks/main.yml
- name: Configure php-{{ php_version }}
template:
src: '{{ item }}.j2'
dest: '/etc/php/{{ php_version }}/{{ item }}'
loop:
- cli/conf.d/50-memory.ini
- fpm/conf.d/50-memory.ini
- fpm/conf.d/50-opcache.ini
- fpm/pool.d/www.conf
notify:
- restart php {{ php_version }}# templates/fpm/conf.d/50-memory.ini.j2
memory_limit = {{ php_fpm_memory_limit }}
post_max_size = {{ php_fpm_post_max_size }}
upload_max_filesize = {{ php_fpm_upload_max_filesize }}
max_file_uploads = {{ php_fpm_max_file_uploads }}# templates/fpm/conf.d/50-opcache.ini.j2
[opcache]
opcache.enable=1
opcache.memory_consumption={{ php_opcache_memory_limit }}
opcache.validate_timestamps=1
opcache.revalidate_freq=1
opcache.huge_code_pages=1edit2:
我不确定这是否是task_profile应该做的,但是下面是这个命令在服务器上的输出,名为management-1。之后,我添加了一个调试任务,以获得精确的时间。甚至不需要更新的4个模板使用了~7.3 s:
TASK [php : Configure php-8.1] ************************************************************************************************************************************************************************************
Tuesday 22 March 2022 10:17:33 +0100 (0:00:02.730) 0:00:06.616 *********
ok: [management-1] => (item=cli/conf.d/50-memory.ini)
ok: [management-1] => (item=fpm/conf.d/50-memory.ini)
ok: [management-1] => (item=fpm/conf.d/50-opcache.ini)
ok: [management-1] => (item=fpm/pool.d/www.conf)
TASK [php : Debug] ************************************************************************************************************************************************************************************************
Tuesday 22 March 2022 10:17:40 +0100 (0:00:07.308) 0:00:13.924 ********* 发布于 2022-06-14 09:40:41
你说得对,Ansible是慢的(就像地狱一样)。这是故意的。他们决定通过ssh将python代码复制到远程主机以执行操作:
network.
循环中的每个项都作为一个单独的任务执行。
放松点喝咖啡。或者更新你的ansible.cfg并祈祷:
[ssh_connection]
pipelining = True
[defaults]
nocows = True
interpreter_python = /usr/bin/python3
gathering = False
forks = 2
strategy = free发布于 2022-04-13 07:36:31
我们刚刚从ansible 2.7.7切换到了2.10.7,而且template任务似乎特别慢了很多,以至于整个剧本所用的时间是以前的两倍。
我怀疑这是ansible中的一个bug,需要跟踪和修复(尽管我必须检查它是否在最近版本的ansible中得到了实际修复)。
https://stackoverflow.com/questions/71565392
复制相似问题