Cron 带Ansible的Shell命令

Cron 带Ansible的Shell命令,cron,ansible,Cron,Ansible,我想使用Ansible来执行几个命令。在我的例子中,我想创建一个文件系统。这是我的代码: - name: Create file system raw: | mkdir -p {{ out }} {{ scripts }} {{ sql }} chown -R postgres:postgres {{ root_dir }} lvcreate -n lv_test -L 5G data_vg mkfs.ext4 {{ fs }} mount {{ fs }}

我想使用Ansible来执行几个命令。在我的例子中,我想创建一个文件系统。这是我的代码:

- name: Create file system
   raw: |
   mkdir -p {{ out }} {{ scripts }} {{ sql }}
   chown -R postgres:postgres {{ root_dir }}
   lvcreate -n lv_test -L 5G data_vg
   mkfs.ext4 {{ fs }}
   mount {{ fs }} {{ home }}
   when: (target_app  == "app")

我想使用
根用户执行所有这些操作。有什么想法吗?

您可以使用与以下类似的
shell
模块:

- name: set a fact
  hosts: localhost
  tasks:
  - name: add users
    become: yes
    become_user: root
    shell: |
        mkdir -p /tmp/blah/moreblah;
        chown -R root:root /tmp/blah/moreblah
也就是说,有像
file
这样的模块可以为您完成一些提升。例如

# create a directory if it doesn't exist
- file:
    path: /etc/some_directory
    state: directory
    group: root
    owner: root
    mode: 0755
    recurse: yes
一般来说,如果您使用shell来执行日常UNIX命令,则可能是做错了

参考资料


谢谢您的回复,我还有一个关于
shell
模块的问题。您可以指定一个用户来执行shell命令吗?我需要成为root用户才能做到这一点。我修改了我的答案,添加了
been\u user:root
。这应该符合你的要求。