在目录中的debian文件上循环,并使用ansible按顺序安装
我在/home/emgda/del/目录中有大约250个Debian文件,这些文件会定期更改,必须在每天结束时安装 因此,我试图编写一个Ansible脚本来循环这个目录,将文件名保存在一个数组中,然后使用命令在目录中的debian文件上循环,并使用ansible按顺序安装,ansible,ansible-2.x,Ansible,Ansible 2.x,我在/home/emgda/del/目录中有大约250个Debian文件,这些文件会定期更改,必须在每天结束时安装 因此,我试图编写一个Ansible脚本来循环这个目录,将文件名保存在一个数组中,然后使用命令sudo dpkg-I file_name 下面是我列出目录中文件的代码,只需添加命令:以某种方式执行上面的命令 --- - hosts: local gather_facts: false tasks: - command: "ls /home/emgda/del/"
sudo dpkg-I file_name
下面是我列出目录中文件的代码,只需添加命令:
以某种方式执行上面的命令
---
- hosts: local
gather_facts: false
tasks:
- command: "ls /home/emgda/del/"
register: dir_out
- debug: var={{item}}
with_items: dir_out.stdout_lines
输出为
PLAY [local] ***********************************************************************************************************
TASK [command] ************************************************************************************************************************
changed: [localhost]
TASK [debug] ************************************************************************************************************************
ok: [localhost] => (item=dir_out.stdout_lines) => {
"dir_out.stdout_lines": [
"a.deb"
],
"item": "dir_out.stdout_lines"
}
PLAY RECAP ************************************************************************************************************************
localhost : ok=2 changed=1 unreachable=0 failed=0
任何帮助都将不胜感激
问:“我在/home/emgda/del/目录中有Debian文件,这些文件会定期更改,必须安装。”
答:下载软件包,并使用
可以在一个任务中插入和安装软件包
- apt:
deb: "{{ item }}"
loop: "{{ query('fileglob', '/home/emgda/del/*.deb') }}"
我用下面的技巧解决了这个问题
---
- hosts: local
gather_facts: false
tasks:
- name: Making a list of files
shell: "ls /home/emgda/packages/"
register: command_result
- name: Installing Debian sequentially.
become: yes
shell: "dpkg -i /home/emgda/packages/{{item}}"
with_items:
- "{{ command_result.stdout_lines }}"
它给出一个错误dpkg:error:请求的操作需要超级用户权限。我试着把
变成,但可能语法有问题。是的sudo dpkg
权限不足,无法运行apt
模块。看见如果没有常规升级权限,则继续执行命令:“sudo dpkg-i{{item}”
。
---
- hosts: local
gather_facts: false
tasks:
- name: Making a list of files
shell: "ls /home/emgda/packages/"
register: command_result
- name: Installing Debian sequentially.
become: yes
shell: "dpkg -i /home/emgda/packages/{{item}}"
with_items:
- "{{ command_result.stdout_lines }}"