如何统计 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
相关推荐
风清再凯2 天前
自动化工具ansible,以及playbook剧本
运维·自动化·ansible
IT乌鸦坐飞机2 天前
ansible部署数据库服务随机启动并创建用户和设置用户有完全权限
数据库·ansible·centos7
遇见火星15 天前
如何使用Ansible一键部署MinIO集群?
ansible
粥周粥15 天前
ANSIBLE
ansible
码农101号15 天前
Linux中ansible模块补充和playbook讲解
linux·运维·ansible
码农101号15 天前
Linux的Ansible软件基础使用讲解和ssh远程连接
ansible
烟雨书信17 天前
ANSIBLE运维自动化管理端部署
运维·自动化·ansible
碎碎-li17 天前
ANSIBLE(运维自动化)
运维·自动化·ansible
@donshu@20 天前
Linux运维-ansible-python开发-获取inventroy信息
linux·运维·ansible
Kendra91923 天前
Ansible
ansible