惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

aimingoo的专栏
aimingoo的专栏
Jina AI
Jina AI
WordPress大学
WordPress大学
Recent Announcements
Recent Announcements
G
Google Developers Blog
I
InfoQ
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Google DeepMind News
Google DeepMind News
P
Proofpoint News Feed
MyScale Blog
MyScale Blog
M
MIT News - Artificial intelligence
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
C
Check Point Blog
J
Java Code Geeks
T
Tailwind CSS Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Microsoft Security Blog
Microsoft Security Blog
MongoDB | Blog
MongoDB | Blog
V
Visual Studio Blog
人人都是产品经理
人人都是产品经理
量子位
A
About on SuperTechFans
D
DataBreaches.Net
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知

Ansible

一个 tui 的 ansible playbook 执行引擎,欢迎使用 分享自己写的一个 ansible role,用来部署 meilisearch 有人同时用 PVE 和 Ansible 吗,用 Ansible 来管理 PVE 上的应用还挺方便 关于《大教堂与集市中》2.12 节的疑问 有时候 bug 出现的目标环境是其他发行版本,用 vagrant 还是 docker 来虚拟环境比较好? yum install -y docker-ce-18.09.9-3.el7 还让我确认?怎么规避这个确认 ansible sudo su - 不支持 关于 AWX 执行 ansible 的原理不解的地方 ansible-playbook 的剧本和相关的二进制文件怎么存比较好? ansbile 怎么把连接的目标 HOST IP 通过变量传递过去 ansible 远程自动交互式命令的响应 jenkins 和 ansible 在不同服务器,想在 jenkins 配置远程 ansible 来调用对应 playbook 和 hosts 可以吗? ansible 有没有关于 passphrase 的配置的 Python 如何将 txt 导入 excel? 刚刚在抢 S7 鸟巢的票,想到一个问题,之前大麦网说被 80W 并发量挤爆了 Ansible 节点边栏链接错误 ansible 中的 check 模式和 diff 模式到底神马意思? ansible su 切换用户问题? 请假 ansible 里 template 模板是否支持目录呢 ansible 如何控制 windows 后台运行 nginx? 玩 Ansible 虐到自己了! Ansible Container Ansible 使用 Dynamic inventory 的 Script 得到的所有主机信息有办法分类么? Ansible 初学问题 ansible 怎么关闭 ask sudo password? 发个福利给 Ansible 的同学们,本人亲测有效 ansible 不支持 windows 做控制端吗?我的 windows10 py3.4 用这个老是出错 ansible 有什么优点么? Ansible 官网的文档读起来好别扭 Ansible 节点这么冷清? 没有人用吗?
ansible api 里面的 ad-hoc 和 playbook 怎么做异步
fanne · 2019-04-07 · via Ansible

在直接使用 ansible 时候有-B -p 参数可以启用异步操作,然后返回一个 job_id 值

[root@master ansible]# ansible node1 -B 3600 -P 0  -m yum -a "name=ansible" -vv
Using /etc/ansible/ansible.cfg as config file
META: ran handlers
192.168.77.129 | SUCCESS => {
    "ansible_job_id": "23974611070.37468", 
    "changed": true, 
    "finished": 0, 
    "results_file": "/root/.ansible_async/23974611070.37468", 
    "started": 1
}

[root@master ansible]# ansible node1 -m async_status -a "jid=23974611070.37468"
192.168.77.129 | SUCCESS => {
    "ansible_job_id": "23974611070.37468", 
    "changed": false, 
    "finished": 1, 
    "msg": "", 
    "rc": 0, 
    "results": [
        "ansible-2.3.1.0-1.el6.noarch providing ansible is already installed"
    ]
}

playbook 也是可以指定参数启用异步的。

# asynctest.yml
---

- hosts: node1
  tasks:
   - shell: sleep 100 && hostname
     async: 100
     poll: 0
     register: result

   - debug: var=result

   - async_status: jid={{ result.ansible_job_id }}
     register: job_result
     until: job_result.finished
     retries: 30

那么在 ansible api 里对于 ad-hoc 和 playbook 怎么启用这个异步任务的,不然页面有时候要卡好久在那的。

# create play with tasks
play_source =  dict(
    name = "Ansible Play",
    hosts = 'all',   # 这里指定 all
    gather_facts = 'no',
    tasks = [
        dict(action=dict(module='shell', args='ls'), register='shell_out'),
        dict(action=dict(module='debug', args=dict(msg='')))
        ]
  )
play = Play().load(play_source, variable_manager=variable_manager, loader=loader)
# actually run it
tqm = None
try:
    tqm = TaskQueueManager(
            inventory=inventory,
            variable_manager=variable_manager,
            loader=loader,
            options=options,
            passwords=passwords,
            stdout_callback=results_callback,  # Use our custom   callback instead of the ``default`` callback plugin
      )
    result = tqm.run(play)
finally:
    if tqm is not None:
        tqm.cleanup()

之前在 django 中会使用 celery 做一些异步任务的工作。

现在想了解 ansible 在使用 api 时候,有没自己的一些异步方式的,我能在 django 中直接使用的。