如何统计 ansible 中每个 task 的耗时?

使用 Ansible 官方的 profile_tasks、timer 插件统计 ansible 中每个 task 的耗时

编辑 ansible 的配置文件

复制代码
vim  /etc/ansible/ansible.cfg

[defaults]
callbacks_enabled = profile_tasks, timer

运行日志

复制代码
Started by user admin
Loading library sharedlib@master
Attempting to resolve master from remote references...
 > git --version # timeout=10
 > git --version # 'git version 2.39.3'
using GIT_SSH to set credentials jenkins ssh private key
[INFO] Currently running in a labeled security context
[INFO] Currently SELinux is 'enforcing' on the host
 > /usr/bin/chcon --type=ssh_home_t /tmpdata/jenkins-gitclient-ssh7342406090002070521.key
 > git ls-remote -h -- git@gitlab.demo.com:devops/jenkins_sharedlib.git # timeout=10
Found match: refs/heads/master revision commitId
WARNING: ignoring request to compute changelog in clone mode
The recommended git tool is: NONE
using credential jenkins
Cloning the remote Git repository
Cloning with configured refspecs honoured and without tags
Cloning repository git@gitlab.demo.com:devops/jenkins_sharedlib.git
 > git init /data/jenkins/jobs/test/builds/535/libs/a721707ee1ff11c239a4096505170fb0e0d20a267e6c5768685c6455f5a26efb/root # timeout=10
Fetching upstream changes from git@gitlab.demo.com:devops/jenkins_sharedlib.git
 > git --version # timeout=10
 > git --version # 'git version 2.39.3'
using GIT_SSH to set credentials jenkins ssh private key
[INFO] Currently running in a labeled security context
[INFO] Currently SELinux is 'enforcing' on the host
> git fetch --no-tags --force --progress -- git@gitlab.demo.com:devops/jenkins_sharedlib.git +refs/heads/*:refs/remotes/origin/* # timeout=10
 > git config remote.origin.url git@gitlab.demo.com:devops/jenkins_sharedlib.git # timeout=10
 > git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/* # timeout=10
Avoid second fetch
Checking out Revision commitId (master)
 > git config core.sparsecheckout # timeout=10
 > git checkout -f commitId # timeout=10
Commit message: "add flask docker build and push"
[Pipeline] Start of Pipeline
[Pipeline] node
Running on Jenkins in /data/jenkins/workspace/test
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Declarative: Checkout SCM)
[Pipeline] checkout
The recommended git tool is: git
using credential jenkins
 > git rev-parse --resolve-git-dir /data/jenkins/workspace/test/.git # timeout=10
Fetching changes from the remote Git repository
 > git config remote.origin.url git@gitlab.demo.com:demo/test.git # timeout=10
Fetching upstream changes from git@gitlab.demo.com:demo/test.git
 > git --version # timeout=10
 > git --version # 'git version 2.39.3'
using GIT_SSH to set credentials jenkins ssh private key
[INFO] Currently running in a labeled security context
[INFO] Currently SELinux is 'enforcing' on the host
 > /usr/bin/chcon --type=ssh_home_t /data/jenkins/workspace/test@tmp/jenkins-gitclient-ssh14822971452146692505.key
 > git fetch --tags --force --progress -- git@gitlab.demo.com:demo/test.git +refs/heads/*:refs/remotes/origin/* # timeout=10
 > git rev-parse refs/remotes/origin/master^{commit} # timeout=10
Checking out Revision 1c4f6908eaf90407c26610c3232825840a758d35 (refs/remotes/origin/master)
 > git config core.sparsecheckout # timeout=10
 > git checkout -f 1c4f6908eaf90407c26610c3232825840a758d35 # timeout=10
Commit message: "Merge branch 'feature/gaofan-1018' into 'master'"
 > git rev-list --no-walk 1c4f6908eaf90407c26610c3232825840a758d35 # timeout=10
[Pipeline] }
[Pipeline] // stage
[Pipeline] withEnv
[Pipeline] {
[Pipeline] withCredentials
Masking supported pattern matches of $ANSIBLE_VAULT_ID
[Pipeline] {
[Pipeline] withEnv
[Pipeline] {
[Pipeline] timeout
Timeout set to expire in 1 hr 0 min
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Prepare)
[Pipeline] script
[Pipeline] {
[Pipeline] echo
INFO: Prepare to check the parameters: (TASK: xxx, ENVIROMENT: dev, BRANCH_TAG: origin/develop)
[Pipeline] echo
INFO: git checkout repositoryUrl git@gitlab.demo.com:demo/test.git with BRANCH_TAG origin/develop
[Pipeline] checkout
The recommended git tool is: git
using credential jenkins
 > git rev-parse --resolve-git-dir /data/jenkins/workspace/test/.git # timeout=10
Fetching changes from the remote Git repository
 > git config remote.origin.url git@gitlab.demo.com:demo/test.git # timeout=10
Fetching upstream changes from git@gitlab.demo.com:demo/test.git
 > git --version # timeout=10
 > git --version # 'git version 2.39.3'
using GIT_SSH to set credentials jenkins ssh private key
[INFO] Currently running in a labeled security context
[INFO] Currently SELinux is 'enforcing' on the host
 > /usr/bin/chcon --type=ssh_home_t /data/jenkins/workspace/test@tmp/xxx.key
 > git fetch --tags --force --progress -- git@gitlab.demo.com:demo/test.git +refs/heads/*:refs/remotes/origin/* # timeout=10
 > git rev-parse refs/remotes/origin/develop^{commit} # timeout=10
Checking out Revision 7e21532cd55804f79fe8991191940e908ac27fab (refs/remotes/origin/develop)
 > git config core.sparsecheckout # timeout=10
 > git checkout -f 7e21532cd55804f79fe8991191940e908ac27fab # timeout=10
Commit message: "Merge branch 'feature/rc-v1.4.1-zhoufeng' of gitlab.demo.com:demo/test into develop"
 > git rev-list --no-walk 7e21532cd55804f79fe8991191940e908ac27fab # timeout=10
[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Build)
[Pipeline] echo
Running Building TASK deploy-vm: test 1 on https://ci.demo.com/ BRANCH_NAME: null
[Pipeline] script
[Pipeline] {
[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Test)
[Pipeline] echo
Testing..
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Deploy)
[Pipeline] script
[Pipeline] {
[Pipeline] ansiblePlaybook
[test] $ ansible-playbook /data/jenkins/workspace/test/playbook.yml xxxx
[WARNING]: Invalid characters were found in group names but not replaced, use
-vvvv to see details

PLAY [test1] **********************************************************

TASK [Gathering Facts] *********************************************************
Wednesday 23 October 2024  10:22:51 +0800 (0:00:00.029)       0:00:00.029 ***** 
ok: [test1]

TASK [flask : debug systemd] ***************************************************
Wednesday 23 October 2024  10:22:59 +0800 (0:00:07.961)       0:00:07.991 ***** 
ok: [test1] => {
    "msg": "systemd value is True"
}

TASK [flask : set run env] *****************************************************
Wednesday 23 October 2024  10:22:59 +0800 (0:00:00.038)       0:00:08.029 ***** 
ok: [test1]

TASK [flask : set flask env] ***************************************************
Wednesday 23 October 2024  10:23:02 +0800 (0:00:02.699)       0:00:10.729 ***** 
ok: [test1]

TASK [flask : create /data/flask, /data/flask-baks directory] ******************
Wednesday 23 October 2024  10:23:04 +0800 (0:00:02.515)       0:00:13.245 ***** 
ok: [test1] => (item=/data/flask)
ok: [test1] => (item=/data/flask-baks)

TASK [flask : debug msg] *******************************************************
Wednesday 23 October 2024  10:23:09 +0800 (0:00:05.199)       0:00:18.445 ***** 
ok: [test1] => {
    "msg": "test 1.0 /data/jenkins/workspace/test/src dev python3.10"
}

TASK [flask : check anaconda3 existence] ***************************************
Wednesday 23 October 2024  10:23:09 +0800 (0:00:00.039)       0:00:18.485 ***** 
ok: [test1]

TASK [flask : check miniconda3 existence] **************************************
Wednesday 23 October 2024  10:23:12 +0800 (0:00:02.666)       0:00:21.151 ***** 
ok: [test1]

TASK [flask : pip install flask_cors prometheus-client] ************************
Wednesday 23 October 2024  10:23:14 +0800 (0:00:02.483)       0:00:23.635 ***** 
ok: [test1]

TASK [flask : supervisorctl stop test] ********************************
Wednesday 23 October 2024  10:23:19 +0800 (0:00:04.305)       0:00:27.941 ***** 
fatal: [test1]: FAILED! => {"changed": true, "cmd": ["supervisorctl", "stop", "test"], "delta": "0:00:00.297865", "end": "2024-10-23 10:23:21.789980", "msg": "non-zero return code", "rc": 7, "start": "2024-10-23 10:23:21.492115", "stderr": "", "stderr_lines": [], "stdout": "unix:///run/supervisor/supervisor.sock no such file", "stdout_lines": ["unix:///run/supervisor/supervisor.sock no such file"]}
...ignoring

TASK [flask : debug stop_result] ***********************************************
Wednesday 23 October 2024  10:23:22 +0800 (0:00:02.906)       0:00:30.848 ***** 
ok: [test1] => {
    "stop_result.stdout_lines": [
        "unix:///run/supervisor/supervisor.sock no such file"
    ]
}

TASK [flask : Set SELinux to permissive mode] **********************************
Wednesday 23 October 2024  10:23:22 +0800 (0:00:00.043)       0:00:30.892 ***** 
ok: [test1]

TASK [flask : systemctl stop flask] ********************************************
Wednesday 23 October 2024  10:23:25 +0800 (0:00:03.031)       0:00:33.923 ***** 
changed: [test1]

TASK [flask : debug stop_result] ***********************************************
Wednesday 23 October 2024  10:28:40 +0800 (0:05:15.389)       0:05:49.313 ***** 
ok: [test1] => {
    "stop_result.stdout_lines": "VARIABLE IS NOT DEFINED!"
}

TASK [flask : date command] ****************************************************
Wednesday 23 October 2024  10:28:40 +0800 (0:00:00.041)       0:05:49.355 ***** 
changed: [test1]

TASK [flask : debug dateext] ***************************************************
Wednesday 23 October 2024  10:28:43 +0800 (0:00:02.407)       0:05:51.762 ***** 
ok: [test1] => {
    "dateext.stdout": "2024-10-23.10.28.42"
}

TASK [flask : backup /data/flask/test into /data/flask-baks/test-2024-10-23.10.28.42.tar.gz] ***
Wednesday 23 October 2024  10:28:43 +0800 (0:00:00.046)       0:05:51.809 ***** 
changed: [test1]

TASK [flask : deploy test] ********************************************
Wednesday 23 October 2024  10:28:53 +0800 (0:00:10.072)       0:06:01.882 ***** 
[DEPRECATION WARNING]: The connection's stdin object is deprecated. Call 
display.prompt_until(msg) instead. This feature will be removed in version 
2.19. Deprecation warnings can be disabled by setting 
deprecation_warnings=False in ansible.cfg.
changed: [test1]

TASK [flask : chmod /data/flask/test/] ********************************
Wednesday 23 October 2024  10:28:54 +0800 (0:00:01.517)       0:06:03.400 ***** 
changed: [test1]

TASK [flask : check that the requirements.txt exists] **************************
Wednesday 23 October 2024  10:28:57 +0800 (0:00:02.653)       0:06:06.053 ***** 
ok: [test1]

TASK [flask : pip install requirements.txt] ************************************
Wednesday 23 October 2024  10:28:59 +0800 (0:00:02.471)       0:06:08.525 ***** 
ok: [test1]

TASK [flask : requirements.txt not exists] *************************************
Wednesday 23 October 2024  10:29:05 +0800 (0:00:06.091)       0:06:14.616 ***** 
skipping: [test1]

TASK [flask : debug pip_install_result] ****************************************
Wednesday 23 October 2024  10:29:05 +0800 (0:00:00.041)       0:06:14.657 ***** 
ok: [test1] => {
    "pip_install_result.stdout_lines": [
        "Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple, https://developer:****@nexus.demo.com/repository/pypi/simple",
        "Requirement already satisfied: cachetools==5.3.2 in /data/pyenv/python3.10/lib/python3.10/site-packages (from -r /data/flask/test/requirements.txt (line 1)) (5.3.2)",
        "Requirement already satisfied: DBUtils==3.0.3 in /data/pyenv/python3.10/lib/python3.10/site-packages (from -r /data/flask/test/requirements.txt (line 2)) (3.0.3)",
        "Requirement already satisfied: Flask==3.0.1 in /data/pyenv/python3.10/lib/python3.10/site-packages (from -r /data/flask/test/requirements.txt (line 3)) (3.0.1)",
        "Requirement already satisfied: Flask-APScheduler==1.12.4 in /data/pyenv/python3.10/lib/python3.10/site-packages (from -r /data/flask/test/requirements.txt (line 4)) (1.12.4)",
        "Requirement already satisfied: SQLAlchemy==2.0.25 in /data/pyenv/python3.10/lib/python3.10/site-packages (from -r /data/flask/test/requirements.txt (line 5)) (2.0.25)",
        "Requirement already satisfied: flake8==7.1.0 in /data/pyenv/python3.10/lib/python3.10/site-packages (from -r /data/flask/test/requirements.txt (line 6)) (7.1.0)",
        "Requirement already satisfied: flask_cors==4.0.0 in /data/pyenv/python3.10/lib/python3.10/site-packages (from -r /data/flask/test/requirements.txt (line 7)) (4.0.0)",
        "Requirement already satisfied: openpyxl==3.1.2 in /data/pyenv/python3.10/lib/python3.10/site-packages (from -r /data/flask/test/requirements.txt (line 8)) (3.1.2)",
        "Requirement already satisfied: PyJWT==1.7.0 in /data/pyenv/python3.10/lib/python3.10/site-packages (from -r /data/flask/test/requirements.txt (line 9)) (1.7.0)",
        "Requirement already satisfied: PyMySQL==1.1.0 in /data/pyenv/python3.10/lib/python3.10/site-packages (from -r /data/flask/test/requirements.txt (line 10)) (1.1.0)",
        "Requirement already satisfied: pyxxl==0.3.5 in /data/pyenv/python3.10/lib/python3.10/site-packages (from -r /data/flask/test/requirements.txt (line 11)) (0.3.5)",
        "Requirement already satisfied: redis==5.0.0 in /data/pyenv/python3.10/lib/python3.10/site-packages (from -r /data/flask/test/requirements.txt (line 12)) (5.0.0)",
        "Requirement already satisfied: Requests==2.31.0 in /data/pyenv/python3.10/lib/python3.10/site-packages (from -r /data/flask/test/requirements.txt (line 13)) (2.31.0)",
        "Requirement already satisfied: rqdatac==2.11.6.1 in /data/pyenv/python3.10/lib/python3.10/site-packages (from -r /data/flask/test/requirements.txt (line 14)) (2.11.6.1)",
        "Requirement already satisfied: Werkzeug==3.0.1 in /data/pyenv/python3.10/lib/python3.10/site-packages (from -r /data/flask/test/requirements.txt (line 15)) (3.0.1)",
        "Requirement already satisfied: sentry-sdk==2.2.0 in /data/pyenv/python3.10/lib/python3.10/site-packages (from sentry-sdk[flask]==2.2.0->-r /data/flask/test/requirements.txt (line 16)) (2.2.0)",
        "Requirement already satisfied: numpy==1.26.3 in /data/pyenv/python3.10/lib/python3.10/site-packages (from -r /data/flask/test/requirements.txt (line 17)) (1.26.3)",
        "Requirement already satisfied: pandas==2.1.4 in /data/pyenv/python3.10/lib/python3.10/site-packages (from -r /data/flask/test/requirements.txt (line 18)) (2.1.4)",
        "Requirement already satisfied: singleton-decorator==1.0.0 in /data/pyenv/python3.10/lib/python3.10/site-packages (from -r /data/flask/test/requirements.txt (line 19)) (1.0.0)",
        "Requirement already satisfied: pydantic==2.8.2 in /data/pyenv/python3.10/lib/python3.10/site-packages (from -r /data/flask/test/requirements.txt (line 20)) (2.8.2)",
        "Requirement already satisfied: psycopg2==2.9.9 in /data/pyenv/python3.10/lib/python3.10/site-packages (from -r /data/flask/test/requirements.txt (line 22)) (2.9.9)",
        "Requirement already satisfied: cos-python-sdk-v5==1.9.30 in /data/pyenv/python3.10/lib/python3.10/site-packages (from -r /data/flask/test/requirements.txt (line 23)) (1.9.30)",
        "Requirement already satisfied: xlrd==2.0.1 in /data/pyenv/python3.10/lib/python3.10/site-packages (from -r /data/flask/test/requirements.txt (line 24)) (2.0.1)",
        "Requirement already satisfied: chardet==4.0.0 in /data/pyenv/python3.10/lib/python3.10/site-packages (from -r /data/flask/test/requirements.txt (line 25)) (4.0.0)",
        "Requirement already satisfied: exchangelib==5.4.2 in /data/pyenv/python3.10/lib/python3.10/site-packages (from -r /data/flask/test/requirements.txt (line 26)) (5.4.2)",
        "Requirement already satisfied: retrying==1.3.4 in /data/pyenv/python3.10/lib/python3.10/site-packages (from -r /data/flask/test/requirements.txt (line 27)) (1.3.4)",
        "Requirement already satisfied: pyAesCrypt==6.1.1 in /data/pyenv/python3.10/lib/python3.10/site-packages (from -r /data/flask/test/requirements.txt (line 28)) (6.1.1)",
        "Requirement already satisfied: concurrent-log-handler==0.9.25 in /data/pyenv/python3.10/lib/python3.10/site-packages (from -r /data/flask/test/requirements.txt (line 29)) (0.9.25)",
        "Requirement already satisfied: hvac==2.3.0 in /data/pyenv/python3.10/lib/python3.10/site-packages (from -r /data/flask/test/requirements.txt (line 30)) (2.3.0)",
        "Requirement already satisfied: PyDispatcher==2.0.7 in /data/pyenv/python3.10/lib/python3.10/site-packages (from -r /data/flask/test/requirements.txt (line 31)) (2.0.7)",
        "Requirement already satisfied: python-dateutil==2.9.0 in /data/pyenv/python3.10/lib/python3.10/site-packages (from -r /data/flask/test/requirements.txt (line 32)) (2.9.0)",
        "Requirement already satisfied: Jinja2>=3.1.2 in /data/pyenv/python3.10/lib/python3.10/site-packages (from Flask==3.0.1->-r /data/flask/test/requirements.txt (line 3)) (3.1.4)",
        "Requirement already satisfied: itsdangerous>=2.1.2 in /data/pyenv/python3.10/lib/python3.10/site-packages (from Flask==3.0.1->-r /data/flask/test/requirements.txt (line 3)) (2.2.0)",
        "Requirement already satisfied: click>=8.1.3 in /data/pyenv/python3.10/lib/python3.10/site-packages (from Flask==3.0.1->-r /data/flask/test/requirements.txt (line 3)) (8.1.7)",
        "Requirement already satisfied: blinker>=1.6.2 in /data/pyenv/python3.10/lib/python3.10/site-packages (from Flask==3.0.1->-r /data/flask/test/requirements.txt (line 3)) (1.6.2)",
        "Requirement already satisfied: apscheduler<4.0.0,>=3.2.0 in /data/pyenv/python3.10/lib/python3.10/site-packages (from Flask-APScheduler==1.12.4->-r /data/flask/test/requirements.txt (line 4)) (3.10.4)",
        "Requirement already satisfied: typing-extensions>=4.6.0 in /data/pyenv/python3.10/lib/python3.10/site-packages (from SQLAlchemy==2.0.25->-r /data/flask/test/requirements.txt (line 5)) (4.11.0)",
        "Requirement already satisfied: greenlet!=0.4.17 in /data/pyenv/python3.10/lib/python3.10/site-packages (from SQLAlchemy==2.0.25->-r /data/flask/test/requirements.txt (line 5)) (3.0.1)",
        "Requirement already satisfied: mccabe<0.8.0,>=0.7.0 in /data/pyenv/python3.10/lib/python3.10/site-packages (from flake8==7.1.0->-r /data/flask/test/requirements.txt (line 6)) (0.7.0)",
        "Requirement already satisfied: pycodestyle<2.13.0,>=2.12.0 in /data/pyenv/python3.10/lib/python3.10/site-packages (from flake8==7.1.0->-r /data/flask/test/requirements.txt (line 6)) (2.12.0)",
        "Requirement already satisfied: pyflakes<3.3.0,>=3.2.0 in /data/pyenv/python3.10/lib/python3.10/site-packages (from flake8==7.1.0->-r /data/flask/test/requirements.txt (line 6)) (3.2.0)",
        "Requirement already satisfied: et-xmlfile in /data/pyenv/python3.10/lib/python3.10/site-packages (from openpyxl==3.1.2->-r /data/flask/test/requirements.txt (line 8)) (1.1.0)",
        "Requirement already satisfied: aiofiles<23.0.0,>=22.1.0 in /data/pyenv/python3.10/lib/python3.10/site-packages (from pyxxl==0.3.5->-r /data/flask/test/requirements.txt (line 11)) (22.1.0)",
        "Requirement already satisfied: aiohttp<4.0.0,>=3.8.1 in /data/pyenv/python3.10/lib/python3.10/site-packages (from pyxxl==0.3.5->-r /data/flask/test/requirements.txt (line 11)) (3.9.5)",
        "Requirement already satisfied: async-timeout>=4.0.2 in /data/pyenv/python3.10/lib/python3.10/site-packages (from redis==5.0.0->-r /data/flask/test/requirements.txt (line 12)) (4.0.3)",
        "Requirement already satisfied: charset-normalizer<4,>=2 in /data/pyenv/python3.10/lib/python3.10/site-packages (from Requests==2.31.0->-r /data/flask/test/requirements.txt (line 13)) (3.3.2)",
        "Requirement already satisfied: idna<4,>=2.5 in /data/pyenv/python3.10/lib/python3.10/site-packages (from Requests==2.31.0->-r /data/flask/test/requirements.txt (line 13)) (3.7)",
        "Requirement already satisfied: urllib3<3,>=1.21.1 in /data/pyenv/python3.10/lib/python3.10/site-packages (from Requests==2.31.0->-r /data/flask/test/requirements.txt (line 13)) (2.2.2)",
        "Requirement already satisfied: certifi>=2017.4.17 in /data/pyenv/python3.10/lib/python3.10/site-packages (from Requests==2.31.0->-r /data/flask/test/requirements.txt (line 13)) (2024.7.4)",
        "Requirement already satisfied: brotli in /data/pyenv/python3.10/lib/python3.10/site-packages (from rqdatac==2.11.6.1->-r /data/flask/test/requirements.txt (line 14)) (1.1.0)",
        "Requirement already satisfied: msgpack>=0.5.2 in /data/pyenv/python3.10/lib/python3.10/site-packages (from rqdatac==2.11.6.1->-r /data/flask/test/requirements.txt (line 14)) (1.0.8)",
        "Requirement already satisfied: six in /data/pyenv/python3.10/lib/python3.10/site-packages (from rqdatac==2.11.6.1->-r /data/flask/test/requirements.txt (line 14)) (1.16.0)",
        "Requirement already satisfied: zstandard in /data/pyenv/python3.10/lib/python3.10/site-packages (from rqdatac==2.11.6.1->-r /data/flask/test/requirements.txt (line 14)) (0.23.0)",
        "Requirement already satisfied: orjson in /data/pyenv/python3.10/lib/python3.10/site-packages (from rqdatac==2.11.6.1->-r /data/flask/test/requirements.txt (line 14)) (3.10.6)",
        "Requirement already satisfied: python-rapidjson in /data/pyenv/python3.10/lib/python3.10/site-packages (from rqdatac==2.11.6.1->-r /data/flask/test/requirements.txt (line 14)) (1.18)",
        "Requirement already satisfied: MarkupSafe>=2.1.1 in /data/pyenv/python3.10/lib/python3.10/site-packages (from Werkzeug==3.0.1->-r /data/flask/test/requirements.txt (line 15)) (2.1.3)",
        "Requirement already satisfied: pytz>=2020.1 in /data/pyenv/python3.10/lib/python3.10/site-packages (from pandas==2.1.4->-r /data/flask/test/requirements.txt (line 18)) (2024.1)",
        "Requirement already satisfied: tzdata>=2022.1 in /data/pyenv/python3.10/lib/python3.10/site-packages (from pandas==2.1.4->-r /data/flask/test/requirements.txt (line 18)) (2023.3)",
        "Requirement already satisfied: annotated-types>=0.4.0 in /data/pyenv/python3.10/lib/python3.10/site-packages (from pydantic==2.8.2->-r /data/flask/test/requirements.txt (line 20)) (0.7.0)",
        "Requirement already satisfied: pydantic-core==2.20.1 in /data/pyenv/python3.10/lib/python3.10/site-packages (from pydantic==2.8.2->-r /data/flask/test/requirements.txt (line 20)) (2.20.1)",
        "Requirement already satisfied: xmltodict in /data/pyenv/python3.10/lib/python3.10/site-packages (from cos-python-sdk-v5==1.9.30->-r /data/flask/test/requirements.txt (line 23)) (0.13.0)",
        "Requirement already satisfied: crcmod in /data/pyenv/python3.10/lib/python3.10/site-packages (from cos-python-sdk-v5==1.9.30->-r /data/flask/test/requirements.txt (line 23)) (1.7)",
        "Requirement already satisfied: pycryptodome in /data/pyenv/python3.10/lib/python3.10/site-packages (from cos-python-sdk-v5==1.9.30->-r /data/flask/test/requirements.txt (line 23)) (3.20.0)",
        "Requirement already satisfied: cached-property in /data/pyenv/python3.10/lib/python3.10/site-packages (from exchangelib==5.4.2->-r /data/flask/test/requirements.txt (line 26)) (1.5.2)",
        "Requirement already satisfied: defusedxml>=0.6.0 in /data/pyenv/python3.10/lib/python3.10/site-packages (from exchangelib==5.4.2->-r /data/flask/test/requirements.txt (line 26)) (0.7.1)",
        "Requirement already satisfied: dnspython>=2.2.0 in /data/pyenv/python3.10/lib/python3.10/site-packages (from exchangelib==5.4.2->-r /data/flask/test/requirements.txt (line 26)) (2.6.1)",
        "Requirement already satisfied: isodate in /data/pyenv/python3.10/lib/python3.10/site-packages (from exchangelib==5.4.2->-r /data/flask/test/requirements.txt (line 26)) (0.6.1)",
        "Requirement already satisfied: lxml>3.0 in /data/pyenv/python3.10/lib/python3.10/site-packages (from exchangelib==5.4.2->-r /data/flask/test/requirements.txt (line 26)) (5.2.2)",
        "Requirement already satisfied: oauthlib in /data/pyenv/python3.10/lib/python3.10/site-packages (from exchangelib==5.4.2->-r /data/flask/test/requirements.txt (line 26)) (3.2.2)",
        "Requirement already satisfied: pygments in /data/pyenv/python3.10/lib/python3.10/site-packages (from exchangelib==5.4.2->-r /data/flask/test/requirements.txt (line 26)) (2.18.0)",
        "Requirement already satisfied: requests-ntlm>=0.2.0 in /data/pyenv/python3.10/lib/python3.10/site-packages (from exchangelib==5.4.2->-r /data/flask/test/requirements.txt (line 26)) (1.3.0)",
        "Requirement already satisfied: requests-oauthlib in /data/pyenv/python3.10/lib/python3.10/site-packages (from exchangelib==5.4.2->-r /data/flask/test/requirements.txt (line 26)) (2.0.0)",
        "Requirement already satisfied: tzlocal in /data/pyenv/python3.10/lib/python3.10/site-packages (from exchangelib==5.4.2->-r /data/flask/test/requirements.txt (line 26)) (5.2)",
        "Requirement already satisfied: cryptography in /data/pyenv/python3.10/lib/python3.10/site-packages (from pyAesCrypt==6.1.1->-r /data/flask/test/requirements.txt (line 28)) (43.0.0)",
        "Requirement already satisfied: portalocker>=1.6.0 in /data/pyenv/python3.10/lib/python3.10/site-packages (from concurrent-log-handler==0.9.25->-r /data/flask/test/requirements.txt (line 29)) (2.10.1)",
        "Requirement already satisfied: aiosignal>=1.1.2 in /data/pyenv/python3.10/lib/python3.10/site-packages (from aiohttp<4.0.0,>=3.8.1->pyxxl==0.3.5->-r /data/flask/test/requirements.txt (line 11)) (1.3.1)",
        "Requirement already satisfied: attrs>=17.3.0 in /data/pyenv/python3.10/lib/python3.10/site-packages (from aiohttp<4.0.0,>=3.8.1->pyxxl==0.3.5->-r /data/flask/test/requirements.txt (line 11)) (23.2.0)",
        "Requirement already satisfied: frozenlist>=1.1.1 in /data/pyenv/python3.10/lib/python3.10/site-packages (from aiohttp<4.0.0,>=3.8.1->pyxxl==0.3.5->-r /data/flask/test/requirements.txt (line 11)) (1.4.1)",
        "Requirement already satisfied: multidict<7.0,>=4.5 in /data/pyenv/python3.10/lib/python3.10/site-packages (from aiohttp<4.0.0,>=3.8.1->pyxxl==0.3.5->-r /data/flask/test/requirements.txt (line 11)) (6.0.5)",
        "Requirement already satisfied: yarl<2.0,>=1.0 in /data/pyenv/python3.10/lib/python3.10/site-packages (from aiohttp<4.0.0,>=3.8.1->pyxxl==0.3.5->-r /data/flask/test/requirements.txt (line 11)) (1.9.4)",
        "Requirement already satisfied: pyspnego>=0.4.0 in /data/pyenv/python3.10/lib/python3.10/site-packages (from requests-ntlm>=0.2.0->exchangelib==5.4.2->-r /data/flask/test/requirements.txt (line 26)) (0.11.1)",
        "Requirement already satisfied: cffi>=1.12 in /data/pyenv/python3.10/lib/python3.10/site-packages (from cryptography->pyAesCrypt==6.1.1->-r /data/flask/test/requirements.txt (line 28)) (1.16.0)",
        "Requirement already satisfied: pycparser in /data/pyenv/python3.10/lib/python3.10/site-packages (from cffi>=1.12->cryptography->pyAesCrypt==6.1.1->-r /data/flask/test/requirements.txt (line 28)) (2.22)"
    ]
}

TASK [flask : Check if app-role file exists] ***********************************
Wednesday 23 October 2024  10:29:06 +0800 (0:00:00.042)       0:06:14.700 ***** 
ok: [test1]

TASK [flask : Print the result if app-role file does not exist] ****************
Wednesday 23 October 2024  10:29:08 +0800 (0:00:02.549)       0:06:17.250 ***** 
skipping: [test1]

TASK [flask : systemd enable supervisord] **************************************
Wednesday 23 October 2024  10:29:08 +0800 (0:00:00.034)       0:06:17.285 ***** 
skipping: [test1]

TASK [flask : start supervisord] ***********************************************
Wednesday 23 October 2024  10:29:08 +0800 (0:00:00.034)       0:06:17.320 ***** 
skipping: [test1]

TASK [flask : write test and 1.0 to supervisord config file] **********
Wednesday 23 October 2024  10:29:08 +0800 (0:00:00.038)       0:06:17.358 ***** 
skipping: [test1]

TASK [flask : supervisorctl update] ********************************************
Wednesday 23 October 2024  10:29:08 +0800 (0:00:00.034)       0:06:17.392 ***** 
skipping: [test1]

TASK [flask : debug update_result] *********************************************
Wednesday 23 October 2024  10:29:08 +0800 (0:00:00.034)       0:06:17.427 ***** 
skipping: [test1]

TASK [flask : supervisorctl start test] *******************************
Wednesday 23 October 2024  10:29:08 +0800 (0:00:00.037)       0:06:17.464 ***** 
skipping: [test1]

TASK [flask : debug start_result] **********************************************
Wednesday 23 October 2024  10:29:08 +0800 (0:00:00.035)       0:06:17.500 ***** 
skipping: [test1]

TASK [flask : fail if start_result.rc is not 0] ********************************
Wednesday 23 October 2024  10:29:08 +0800 (0:00:00.037)       0:06:17.537 ***** 
skipping: [test1]

TASK [flask : copy flask logrotate config] *************************************
Wednesday 23 October 2024  10:29:08 +0800 (0:00:00.036)       0:06:17.574 ***** 
ok: [test1]

TASK [flask : copy flask.service] **********************************************
Wednesday 23 October 2024  10:29:12 +0800 (0:00:03.828)       0:06:21.402 ***** 
ok: [test1]

TASK [flask : systemd enable flask service] ************************************
Wednesday 23 October 2024  10:29:16 +0800 (0:00:03.861)       0:06:25.264 ***** 
ok: [test1]

TASK [flask : start flask service] *********************************************
Wednesday 23 October 2024  10:29:19 +0800 (0:00:02.889)       0:06:28.153 ***** 
changed: [test1]

TASK [flask : systemctl status flask] ******************************************
Wednesday 23 October 2024  10:29:29 +0800 (0:00:09.970)       0:06:38.124 ***** 
changed: [test1]

TASK [flask : debug flask_status] **********************************************
Wednesday 23 October 2024  10:29:44 +0800 (0:00:14.606)       0:06:52.731 ***** 
ok: [test1] => {
    "flask_status": {
        "changed": true,
        "cmd": [
            "systemctl",
            "status",
            "flask"
        ],
        "delta": "0:00:00.140465",
        "end": "2024-10-23 10:29:41.441023",
        "failed": false,
        "msg": "",
        "rc": 0,
        "start": "2024-10-23 10:29:41.300558",
        "stderr": "",
        "stderr_lines": [],
        "stdout": "● flask.service - Flask Application Server\n   Loaded: loaded (/etc/systemd/system/flask.service; enabled; vendor preset: disabled)\n   Active: active (running) since Wed 2024-10-23 10:29:27 CST; 14s ago\n Main PID: 901148 (uwsgi)\n   Status: \"uWSGI is ready\"\n    Tasks: 36 (limit: 22924)\n   Memory: 1.4G\n   CGroup: /system.slice/flask.service\n           ├─901148 /home/work/.conda/envs/python3.10/bin/uwsgi --ini /data/flask/test/uwsgi.ini\n           ├─901176 python xxl_job_executor.py\n           ├─901177 python consumer_init_executor.py 1\n           ├─901178 python consumer_init_executor.py 2\n           ├─901179 /home/work/.conda/envs/python3.10/bin/uwsgi --ini /data/flask/test/uwsgi.ini\n           ├─901180 /home/work/.conda/envs/python3.10/bin/uwsgi --ini /data/flask/test/uwsgi.ini\n           ├─901181 /home/work/.conda/envs/python3.10/bin/uwsgi --ini /data/flask/test/uwsgi.ini\n           ├─901182 /home/work/.conda/envs/python3.10/bin/uwsgi --ini /data/flask/test/uwsgi.ini\n           └─901183 /home/work/.conda/envs/python3.10/bin/uwsgi --ini /data/flask/test/uwsgi.ini\n\nOct 23 10:29:21 test1 systemd[1]: Starting Flask Application Server...\nOct 23 10:29:27 test1 systemd[1]: Started Flask Application Server.",
        "stdout_lines": [
            "● flask.service - Flask Application Server",
            "   Loaded: loaded (/etc/systemd/system/flask.service; enabled; vendor preset: disabled)",
            "   Active: active (running) since Wed 2024-10-23 10:29:27 CST; 14s ago",
            " Main PID: 901148 (uwsgi)",
            "   Status: \"uWSGI is ready\"",
            "    Tasks: 36 (limit: 22924)",
            "   Memory: 1.4G",
            "   CGroup: /system.slice/flask.service",
            "           ├─901148 /home/work/.conda/envs/python3.10/bin/uwsgi --ini /data/flask/test/uwsgi.ini",
            "           ├─901176 python xxl_job_executor.py",
            "           ├─901177 python consumer_init_executor.py 1",
            "           ├─901178 python consumer_init_executor.py 2",
            "           ├─901179 /home/work/.conda/envs/python3.10/bin/uwsgi --ini /data/flask/test/uwsgi.ini",
            "           ├─901180 /home/work/.conda/envs/python3.10/bin/uwsgi --ini /data/flask/test/uwsgi.ini",
            "           ├─901181 /home/work/.conda/envs/python3.10/bin/uwsgi --ini /data/flask/test/uwsgi.ini",
            "           ├─901182 /home/work/.conda/envs/python3.10/bin/uwsgi --ini /data/flask/test/uwsgi.ini",
            "           └─901183 /home/work/.conda/envs/python3.10/bin/uwsgi --ini /data/flask/test/uwsgi.ini",
            "",
            "Oct 23 10:29:21 test1 systemd[1]: Starting Flask Application Server...",
            "Oct 23 10:29:27 test1 systemd[1]: Started Flask Application Server."
        ]
    }
}

TASK [flask : fail if flask service status is not active] **********************
Wednesday 23 October 2024  10:29:44 +0800 (0:00:00.063)       0:06:52.794 ***** 
skipping: [test1]

PLAY RECAP *********************************************************************
test1             : ok=29   changed=8    unreachable=0    failed=0    skipped=11   rescued=0    ignored=1   

Wednesday 23 October 2024  10:29:44 +0800 (0:00:00.089)       0:06:52.884 ***** 
=============================================================================== 
flask : systemctl stop flask ------------------------------------------ 315.39s
flask : systemctl status flask ----------------------------------------- 14.61s
flask : backup /data/flask/test into /data/flask-baks/test-2024-10-23.10.28.42.tar.gz -- 10.07s
flask : start flask service --------------------------------------------- 9.97s
Gathering Facts --------------------------------------------------------- 7.96s
flask : pip install requirements.txt ------------------------------------ 6.09s
flask : create /data/flask, /data/flask-baks directory ------------------ 5.20s
flask : pip install flask_cors prometheus-client ------------------------ 4.31s
flask : copy flask.service ---------------------------------------------- 3.86s
flask : copy flask logrotate config ------------------------------------- 3.83s
flask : Set SELinux to permissive mode ---------------------------------- 3.03s
flask : supervisorctl stop test -------------------------------- 2.91s
flask : systemd enable flask service ------------------------------------ 2.89s
flask : set run env ----------------------------------------------------- 2.70s
flask : check anaconda3 existence --------------------------------------- 2.67s
flask : chmod /data/flask/test/ -------------------------------- 2.65s
flask : Check if app-role file exists ----------------------------------- 2.55s
flask : set flask env --------------------------------------------------- 2.52s
flask : check miniconda3 existence -------------------------------------- 2.48s
flask : check that the requirements.txt exists -------------------------- 2.47s
Playbook run took 0 days, 0 hours, 6 minutes, 52 seconds
[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // timeout
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // withCredentials
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS

实际效果

profile_tasks 插件日志

复制代码
TASK [flask : systemctl stop flask] ********************************************
Wednesday 23 October 2024  10:23:25 +0800 (0:00:03.031)       0:00:33.923 ***** 
changed: [test1]

TASK [flask : debug stop_result] ***********************************************
Wednesday 23 October 2024  10:28:40 +0800 (0:05:15.389)       0:05:49.313 ***** 
ok: [test1] => {
    "stop_result.stdout_lines": "VARIABLE IS NOT DEFINED!"
}

timer 插件日志

复制代码
=============================================================================== 
flask : systemctl stop flask ------------------------------------------ 315.39s
flask : systemctl status flask ----------------------------------------- 14.61s
flask : backup /data/flask/test into /data/flask-baks/test-2024-10-23.10.28.42.tar.gz -- 10.07s
flask : start flask service --------------------------------------------- 9.97s
Gathering Facts --------------------------------------------------------- 7.96s
flask : pip install requirements.txt ------------------------------------ 6.09s
flask : create /data/flask, /data/flask-baks directory ------------------ 5.20s
flask : pip install flask_cors prometheus-client ------------------------ 4.31s
flask : copy flask.service ---------------------------------------------- 3.86s
flask : copy flask logrotate config ------------------------------------- 3.83s
flask : Set SELinux to permissive mode ---------------------------------- 3.03s
flask : supervisorctl stop test -------------------------------- 2.91s
flask : systemd enable flask service ------------------------------------ 2.89s
flask : set run env ----------------------------------------------------- 2.70s
flask : check anaconda3 existence --------------------------------------- 2.67s
flask : chmod /data/flask/test/ -------------------------------- 2.65s
flask : Check if app-role file exists ----------------------------------- 2.55s
flask : set flask env --------------------------------------------------- 2.52s
flask : check miniconda3 existence -------------------------------------- 2.48s
flask : check that the requirements.txt exists -------------------------- 2.47s
Playbook run took 0 days, 0 hours, 6 minutes, 52 seconds
相关推荐
有毒的教程1 天前
Ansible批量操作自动化完整教程:批量部署服务、配置同步、软件更新实战
运维·自动化·ansible
Hy行者勇哥6 天前
用Cursor智能编写Ansible/Terraform脚本,打通CI/CD链路
ci/cd·ansible·terraform
芷栀夏8 天前
飞牛NAS怎么部署Immich?家庭照片自动备份与远程访问教程
服务器·nginx·ansible
悠然南风19 天前
Ansible常见模块总结及LDAP Role 编写与调试
ansible
祺风挽楠1 个月前
ansible编辑
网络·ansible
芳心粽伙饭1 个月前
Ansible课后作业
ansible
烁3471 个月前
Ansible初识
ansible
烁3471 个月前
Ansible安装部署调试
ansible
烁3471 个月前
Ansible命令
ansible
小义_1 个月前
【Ansible】(三)基础配置与连接设置
云原生·ansible