是否可以在 ad-hoc ansible cmd 中加入 2 diff cmd?

是否可以在 ad-hoc ansible cmd 中加入 2 diff cmd?

我需要在 ansible 中以 ad-hoc 模式運行 2 diff cmd ?是否可以

1]主機名

2] df-h

# ansible example -s -a "hostname && df -h"

錯誤

```[root@ansi1 ansible]# ansible example -s -a "hostname && df -h"
ansi2.example.com | FAILED | rc=4 >>
Usage: hostname [-v] {hostname|-F file}      set hostname (from file)
       domainname [-v] {nisdomain|-F file}   set NIS domainname (from file)
       hostname [-v] [-d|-f|-s|-a|-i|-y|-A|-I]  display formatted name
       hostname [-v]                         display hostname

       hostname -V|--version|-h|--help       print info and exit

    dnsdomainname=hostname -d, {yp,nis,}domainname=hostname -y

    -s, --short           short host name
    -a, --alias           alias names
    -i, --ip-address      addresses for the hostname
    -I, --all-ip-addresses all addresses for the host
    -f, --fqdn, --long    long host name (FQDN)
    -A, --all-fqdns        all long host names (FQDNs)
    -d, --domain          DNS domain name
    -y, --yp, --nis       NIS/YP domainname
    -F, --file            read hostname or NIS domainname from given file

   This command can read or set the hostname or the NIS domainname. You can
   also read the DNS domain or the FQDN (fully qualified domain name).
   Unless you are using bind or NIS for host lookups you can change the
   FQDN (Fully Qualified Domain Name) and the DNS domain name (which is
   part of the FQDN) in the /etc/hosts file.
```

答案1

發現我的錯誤,,,愚蠢的一個

[root@ansi1 ansible]# ansible example -s -m shell -a "hostname && df -h"
ansi2.example.com | SUCCESS | rc=0 >>
ansi2.example.com
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_ansible2-lv_root
                      6.5G  980M  5.2G  16% /
tmpfs                 939M     0  939M   0% /dev/shm
/dev/sda1             477M   54M  398M  12% /boot

答案2

似乎ansible不使用 shell 來運行你的命令。但是,您顯然在自訂命令中使用了 shell 語法:&&。因此,您的一種選擇是直接告訴 ansible 使用 shell:

$ ansible localhost -s -a "bash -c 'hostname && df -h'"

相關內容