{"id":43058,"date":"2023-08-11T15:11:57","date_gmt":"2023-07-27T23:53:07","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/%e7%8e%b0%e5%9c%a8%e5%86%8d%e6%ac%a1%e8%b5%b0%e5%90%91%e9%ad%94%e6%b3%95%e5%92%96%e7%b3%bb%e7%bb%9f%e7%9a%84%e9%81%93%e8%b7%af%ef%bd%9e%e9%87%87%e7%94%a8ansible%e5%89%8d%e8%bf%9b%e5%90%a7%ef%bd%9e\/"},"modified":"2024-04-30T18:05:17","modified_gmt":"2024-04-30T10:05:17","slug":"%e7%8e%b0%e5%9c%a8%e5%86%8d%e6%ac%a1%e8%b5%b0%e5%90%91%e9%ad%94%e6%b3%95%e5%92%96%e7%b3%bb%e7%bb%9f%e7%9a%84%e9%81%93%e8%b7%af%ef%bd%9e%e9%87%87%e7%94%a8ansible%e5%89%8d%e8%bf%9b%e5%90%a7%ef%bd%9e","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/%e7%8e%b0%e5%9c%a8%e5%86%8d%e6%ac%a1%e8%b5%b0%e5%90%91%e9%ad%94%e6%b3%95%e5%92%96%e7%b3%bb%e7%bb%9f%e7%9a%84%e9%81%93%e8%b7%af%ef%bd%9e%e9%87%87%e7%94%a8ansible%e5%89%8d%e8%bf%9b%e5%90%a7%ef%bd%9e\/","title":{"rendered":"\u73b0\u5728\u518d\u6b21\u8d70\u5411\u9b54\u6cd5\u5496\u7cfb\u7edf\u7684\u9053\u8def\uff5e\u91c7\u7528Ansible\u524d\u8fdb\u5427\uff5e"},"content":{"rendered":"<p>\u65e2\u306b\u69cb\u7bc9\u6e08\u307f\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u4f7f\u7528\u3057\u3066\u4e00\u62ec\u3067\u8a2d\u5b9a\u3092\u884c\u3044\u307e\u3059\u3002\u5148\u307b\u3069\u306e\u518d\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306b\u3088\u308a\u3001SLURM\u306a\u3069\u3082\u518d\u5ea6\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n<h1>\u4f7f\u7528Ansible\u8fdb\u884c\u914d\u7f6e\u7ba1\u7406\u3002<\/h1>\n<p>\u6211\u4eec\u4f1a\u7ee7\u7eed\u8fdb\u884c\u4e0b\u53bb\u3002<\/p>\n<h2>\u6b65\u9aa4\u4e00\uff0c\u7406\u89e3\u6784\u6210<\/h2>\n<p>\u5728\u63a5\u4e0b\u6765\u7684\u8fc7\u7a0b\u4e2d\uff0c\u6211\u4eec\u5c06\u4e86\u89e3\u8fd9\u4e2a\u914d\u7f6e\u3002\u9ea6\u5c14\u57fa\u5965\uff08192.168.1.101\uff09\u3001\u5df4\u5c14\u5854\u8428\u5c14\uff08192.168.1.102\uff09\u548c\u5361\u65af\u6ce2\uff08192.168.1.103\uff09\u662f\u4e00\u4e2a\u7b80\u5355\u7684\u5e76\u884c\u8ba1\u7b97\u673a\uff0c\u6b63\u5982\u5b83\u4eec\u7684\u540d\u5b57\u6240\u793a\uff0c\u7531\u4e09\u53f0\u8ba1\u7b97\u673a\u7ec4\u6210\u3002<br \/>\n\u53e6\u5916\uff0c\u8fd8\u6709\u4e00\u4e2a\u7ba1\u7406\u8282\u70b9CTL\uff08192.168.1.100\uff09\u548c\u4e00\u4e2aVPN\u8282\u70b9VPN\uff08192.168.1.98\uff09\u3002<\/p>\n<p>\u5404\u79cd\u8bbe\u5907\u5df2\u7ecf\u914d\u7f6e\u4e86\u8def\u7531\u5668\uff0c\u53ef\u4ee5\u6839\u636eMAC\u5730\u5740\u81ea\u52a8\u5206\u914dIP\u3002<\/p>\n<p>\u8fd9\u6b21\u6211\u4eec\u4f1a\u4eceVPN\u673a\u5668\u4e0a\u8fdb\u884c\u914d\u7f6e\u7ba1\u7406\u3002\u9996\u5148\u6211\u4eec\u4f1a\u4fee\u6539\/etc\/hosts\u6587\u4ef6\u3002<\/p>\n<pre class=\"post-pre\"><code>[evakichi@localhost ~]$ cat &lt; \/etc\/hosts\r\n127.0.0.1               localhost.localdomain localhost\r\n::1             localhost6.localdomain6 localhost6\r\n192.168.1.98    vpn vpn.sc-magi.com\r\n192.168.1.100   ctl ctl.sc-magi.com\r\n192.168.1.110   ctl-wl ctl-wl.sc-magi.com\r\n192.168.1.101   melchior melchior.sc-magi.com system01 system01.sc-magi.com\r\n192.168.1.111   melchior-wl melchior-wl.sc-magi.com system01-wl system01-wl.sc-magi.com\r\n192.168.1.102   balthasar balthasar.sc-magi.com system02 system02.sc-magi.com\r\n192.168.1.112   balthasar-wl balthasar-wl.sc-magi.com system02-wl system02-wl.sc-magi.com\r\n192.168.1.103   casper casper.sc-magi.com system03 system03.sc-magi.com\r\n192.168.1.113   casper-wl casper-wl.sc-magi.com system03-wl system03-wl.sc-magi.com\r\n<\/code><\/pre>\n<p>\u5c06 hogehoge-wl \u5206\u914d\u7ed9\u65e0\u7ebf\u5c40\u57df\u7f51\u4f7f\u7528\uff0c\u4f46\u8fd9\u6b21\u6211\u60f3\u5728\u6700\u540e\u8bbe\u7f6e\u5b83\u3002<\/p>\n<h2>\u7b2c\u4e00\u6b65\uff0c\u521b\u5efaSSH\u5bc6\u94a5\u5bf9\u3002<\/h2>\n<p>\u597d\u7684\uff0c\u4f5c\u4e3a\u7b2c\u4e00\u9879\u5de5\u4f5c\uff0c\u6211\u4eec\u8981\u521b\u5efa\u4e00\u4e2aSSH\u5bc6\u94a5\u5bf9\u3002<\/p>\n<pre class=\"post-pre\"><code>[evakichi@localhost ~]$ ssh-keygen -b 4096\r\nGenerating public\/private rsa key pair.\r\nEnter file in which to save the key (\/home\/evakichi\/.ssh\/id_rsa): \/home\/evakichi\/.ssh\/id_rsa_fedora_magi\r\nCreated directory '\/home\/evakichi\/.ssh'.\r\nEnter passphrase (empty for no passphrase):\r\nEnter same passphrase again:\r\nYour identification has been saved in \/home\/evakichi\/.ssh\/id_rsa_fedora_magi.\r\nYour public key has been saved in \/home\/evakichi\/.ssh\/id_rsa_fedora_magi.pub.\r\nThe key fingerprint is:\r\nSHA256:LqBYmpK1mZ+uP6QBSyQxA33Ogms1U511R2u6AKOuW04 evakichi@localhost.localdomain\r\nThe key's randomart image is:\r\n+---[RSA 4096]----+\r\n|*o    . o. ..o   |\r\n|.+. .. o  . . .  |\r\n|o. +.  o     o   |\r\n|o..+o . o   o    |\r\n|.++.+.  S. .     |\r\n|oO.=o. .  . .    |\r\n|B =+ E. .  .   . |\r\n|. ..*. .         |\r\n|  .**o           |\r\n+----[SHA256]-----+\r\n<\/code><\/pre>\n<p>\u5b8c\u6210\u4e86\u5bc6\u94a5\u5bf9\u3002<br \/>\n\u63a5\u4e0b\u6765\uff0c\u9996\u5148\u8fdb\u884c\u4e3b\u673a\u540d\u66f4\u6539\u548chosts\u8f6c\u79fb&#8230;&#8230;\u5728\u6b64\u4e4b\u524d\uff0c\u5148\u5c06\u5bc6\u94a5\u4f20\u9001\u5230\u5404\u4e2a\u673a\u5668\u3002<\/p>\n<pre class=\"post-pre\"><code>[evakichi@localhost ~]$ ssh-copy-id -i .ssh\/id_rsa_fedora_magi casper\r\n\/usr\/bin\/ssh-copy-id: INFO: Source of key(s) to be installed: \".ssh\/id_rsa_fedora_magi.pub\"\r\nThe authenticity of host 'casper (192.168.1.103)' can't be established.\r\nECDSA key fingerprint is SHA256:13yeYjc0c69tDbRlbCGNpmqvu\/7h+jIE8IAhntUKhEg.\r\nAre you sure you want to continue connecting (yes\/no\/[fingerprint])? yes\r\n\/usr\/bin\/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed\r\n\/usr\/bin\/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys\r\nevakichi@casper's password:\r\n\r\nNumber of key(s) added: 1\r\n\r\nNow try logging into the machine, with:   \"ssh 'casper'\"\r\nand check to make sure that only the key(s) you wanted were added.\r\n<\/code><\/pre>\n<p>\u6211\u6253\u7b97\u5148\u7b80\u5316\u5de5\u5e8f\uff0c\u76f4\u63a5\u505a4\u4e2a\u3002<\/p>\n<h1>\u5b89\u88c5Ansible<\/h1>\n<p>\u90a3\u4e48\uff0c\u6211\u4eec\u5f00\u59cb\u5728ctl\u4e0a\u5b89\u88c5Ansible\u5427\u3002\u5f88\u7b80\u5355\u5bf9\u5427\uff1f<\/p>\n<pre class=\"post-pre\"><code>$ sudo dnf install ansible\r\n<\/code><\/pre>\n<p>\u4e0b\u9762\u6211\u4eec\u4e3a\u6bcf\u4e2a\u5ba2\u6237\u7aef\uff081\u4e2a\u4e3b\u670d\u52a1\u5668\u548c3\u4e2a\u4ece\u670d\u52a1\u5668\uff1a\u8bbe\u7f6e\u6709\u4e9b\u4e0d\u540c\uff09\u521b\u5efaansible\u7528\u6237\u3002\u6211\u4eec\u4e5f\u4e3a\u5bc6\u7801\u9009\u62e9\u4e00\u4e2a\u7b80\u5355\u7684\u5bc6\u7801\u3002<\/p>\n<pre class=\"post-pre\"><code>[evakichi@localhost ~]$ sudo useradd ansible\r\n[sudo] password for evakichi:\r\n[evakichi@localhost ~]$ sudo passwd ansible\r\nChanging password for user ansible.\r\nNew password:\r\nRetype new password:\r\npasswd: all authentication tokens updated successfully.\r\n[evakichi@localhost ~]$ sudo usermod -aG wheel ansible\r\n<\/code><\/pre>\n<p>\u6211\u4f1a\u4e3a\u6bcf\u4e2a\u8282\u70b9\u6267\u884c\u8fd9\u4e2a\u64cd\u4f5c\u3002<br \/>\n\u54e6\uff0c\u6211\u5fd8\u4e86\uff0c\u8fd8\u8981\u4e3a\u81ea\u5df1\u6dfb\u52a0ansible\u7528\u6237\u3002<\/p>\n<pre class=\"post-pre\"><code>[root@vpn ~]# passwd ansible\r\nChanging password for user ansible.\r\nNew password:\r\nRetype new password:\r\npasswd: all authentication tokens updated successfully.\r\n[root@vpn ~]# usermod -aG wheel ansible\r\n<\/code><\/pre>\n<p>\u786e\u5b9a\u7528\u6237\u5df2\u6b63\u786e\u6dfb\u52a0\u5230&#8221;wheel&#8221;\u7ec4\u53ef\u80fd\u662f\u4e00\u4e2a\u597d\u4e3b\u610f\u3002<\/p>\n<pre class=\"post-pre\"><code>[root@vpn ~]# id ansible\r\nuid=1001(ansible) gid=1001(ansible) groups=1001(ansible),10(wheel)\r\n<\/code><\/pre>\n<p>\u6211\u5fd8\u4e86\u53e6\u4e00\u4ef6\u4e8b\u60c5\uff0c\u9700\u8981\u5c06SSH\u516c\u94a5\u590d\u5236\u7ed9ansible\u7528\u6237&#8230;<\/p>\n<pre class=\"post-pre\"><code>[evakichi@vpn ~]$ ssh-copy-id -i .\/.ssh\/id_rsa_fedora_magi ansible@casper\r\n\/usr\/bin\/ssh-copy-id: INFO: Source of key(s) to be installed: \".\/.ssh\/id_rsa_fedora_magi.pub\"\r\n\/usr\/bin\/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed\r\n\/usr\/bin\/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys\r\nansible@casper's password:\r\n\r\nNumber of key(s) added: 1\r\n\r\nNow try logging into the machine, with:   \"ssh 'ansible@casper'\"\r\nand check to make sure that only the key(s) you wanted were added.\r\n\r\n<\/code><\/pre>\n<h1>\u7528Ansible\u590d\u5236\u4e3b\u673a<\/h1>\n<p>\u6211\u53ea\u4f1a\u5199\u4e00\u4e9b\u7b80\u5355\u7684\u8bbe\u7f6e\u3002\u56e0\u4e3a\u6211\u53ea\u662f\u60f3\u8bd5\u8bd5\u4eca\u5929\u662f\u5426\u80fd\u7528\uff0c\u6240\u4ee5\u6211\u6253\u7b97\u590d\u5236\/etc\/hosts\u6587\u4ef6\uff0c\u8fd9\u6837\u633a\u5408\u9002\u7684\u3002<\/p>\n<p>\u90a3\u4e48\uff0c\u521b\u5efa\u5e93\u5b58\u3002<\/p>\n<pre class=\"post-pre\"><code>[magi-system]\r\ncasper ansible_host=192.168.1.103\r\nbalthasar ansible_host=192.168.1.102\r\nmelchior ansible_host=192.168.1.101\r\nctl ansible_host=192.168.1.100\r\n\r\n[linux_servers:children]\r\nmagi-system\r\n<\/code><\/pre>\n<p>\u63a5\u4e0b\u6765\u8981\u5199playbook\u3002<\/p>\n<pre class=\"post-pre\"><code>---\r\n- name: main.yml\r\n  hosts: linux-servers\r\n  remote_user: ansible\r\n  roles:\r\n    - copy-hosts\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>---\r\n- name: deploy hosts\r\n  become: yes\r\n  copy:\r\n    src: hosts\r\n    dest: \/etc\/hosts\r\n    owner: root\r\n    group: root\r\n    mode: 0644\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>[ansible@vpn ansible-playbooks]$ ansible-playbook -i inventory.ini init.yml --ask-become-pass\r\nBECOME password:\r\n[DEPRECATION WARNING]: The TRANSFORM_INVALID_GROUP_CHARS settings is set to allow bad characters in group names by default, this will change, but still be user configurable on deprecation. This feature will be removed in version 2.10.\r\nDeprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.\r\n[WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details\r\n\r\n\r\nPLAY [main.yml] *****************************************************************************************************************************************************************************************************************************\r\n\r\nTASK [Gathering Facts] **********************************************************************************************************************************************************************************************************************\r\nok: [melchior]\r\nok: [ctl]\r\nok: [casper]\r\nok: [balthasar]\r\n\r\nTASK [copy-hosts : deploy hosts] ************************************************************************************************************************************************************************************************************\r\nchanged: [ctl]\r\nchanged: [melchior]\r\nchanged: [balthasar]\r\nchanged: [casper]\r\n\r\nPLAY RECAP **********************************************************************************************************************************************************************************************************************************\r\nbalthasar                  : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0\r\ncasper                     : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0\r\nctl                        : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0\r\nmelchior                   : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0\r\n<\/code><\/pre>\n<p>\u597d\u50cf\u8fdb\u5c55\u5f88\u987a\u5229\u3002<br \/>\n\u4f46\u662f\uff0c\u6211\u7a0d\u5fae\u6709\u70b9\u62c5\u5fc3\u4e0a\u9762\u7684\u8b66\u544a\u3002<\/p>\n<p>\u56e0\u6b64\uff0c\u6309\u7167\u6307\u793a\u529e\u7406<\/p>\n<pre class=\"post-pre\"><code>[ansible@vpn ansible-playbooks]$ ansible-playbook -i inventory.ini init.yml --ask-become-pass\r\nBECOME password:\r\n[WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details\r\n\r\n\r\nPLAY [main.yml] *****************************************************************************************************************************************************************************************************************************\r\n\r\nTASK [Gathering Facts] **********************************************************************************************************************************************************************************************************************\r\nok: [ctl]\r\nok: [balthasar]\r\nok: [melchior]\r\nok: [casper]\r\n\r\nTASK [copy-hosts : deploy hosts] ************************************************************************************************************************************************************************************************************\r\nok: [melchior]\r\nok: [balthasar]\r\nok: [casper]\r\nok: [ctl]\r\n\r\nPLAY RECAP **********************************************************************************************************************************************************************************************************************************\r\nbalthasar                  : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0\r\ncasper                     : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0\r\nctl                        : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0\r\nmelchior                   : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0\r\n<\/code><\/pre>\n<p>\u4e00\u4e2a\u8b66\u544a\u5df2\u7ecf\u89e3\u9664\u4e86\u3002\u53e6\u4e00\u4e2a\u7a0d\u540e\u518d\u5904\u7406\u3002<\/p>\n<h1>\u4f7f\u7528Ansible\u6784\u5efa\u5e76\u884c\u73af\u5883\u3002<\/h1>\n<p>\u65e0\u8bba\u5982\u4f55\uff0c\u4e00\u5207\u90fd\u8fd0\u8f6c\u5730\u5f88\u987a\u5229\u3002\u63a5\u4e0b\u6765\uff0c\u6211\u4eec\u4f1a\u7ee7\u7eed\u5f15\u5165\u5e76\u884c\u5316\u73af\u5883\u3002<br \/>\n\u9996\u5148\u662f\u521b\u5efaMUNGE\u5bc6\u94a5\u7684\u5de5\u4f5c\u3002<\/p>\n<pre class=\"post-pre\"><code> dd if=\/dev\/random bs=1 count=1024 &gt;.\/install-MPI_OPENMP\/files\/munge.key\r\n<\/code><\/pre>\n<p>\u56e0\u4e3a\u6211\u4e5f\u5236\u4f5c\u4e86\u94a5\u5319\uff0c\u6240\u4ee5\u6211\u4eec\u6765\u5b9e\u9645\u8fdb\u884c\u5b89\u88c5\u5927\u8d5b\u3002<br \/>\n\u9996\u5148\uff0c\u6211\u4eec\u8981\u521b\u5efa\u4e00\u4e2a\u64ad\u653e\u5267\u672c\u3002<\/p>\n<pre class=\"post-pre\"><code>\r\n[ansible@vpn ansible-playbooks]$ cat install-MPI_OPENMP\/tasks\/main.yml\r\n---\r\n- name: install mpich\r\n  become: yes\r\n  dnf:\r\n    name: mpich\r\n    state: latest\r\n    update_cache: yes\r\n- name: install mpich-devel\r\n  become: yes\r\n  dnf:\r\n    name: mpich-devel\r\n    state: latest\r\n    update_cache: yes\r\n- name: install mpich-doc\r\n  become: yes\r\n  dnf:\r\n    name: mpich-doc\r\n    state: latest\r\n    update_cache: yes\r\n- name: install openmpi\r\n  become: yes\r\n  dnf:\r\n    name: openmpi\r\n    state: latest\r\n    update_cache: yes\r\n- name: install openmpi\r\n  become: yes\r\n  dnf:\r\n    name: openmpi-devel\r\n    state: latest\r\n    update_cache: yes\r\n- name: install libomp\r\n  become: yes\r\n  dnf:\r\n    name: libomp\r\n    state: latest\r\n    update_cache: yes\r\n- name: install libomp-test\r\n  become: yes\r\n  dnf:\r\n    name: libomp-test\r\n    state: latest\r\n    update_cache: yes\r\n- name: install libomp-devel\r\n  become: yes\r\n  dnf:\r\n    name: libomp-devel\r\n    state: latest\r\n    update_cache: yes\r\n- name: install slurm\r\n  become: yes\r\n  dnf:\r\n    name: slurm*\r\n    state: latest\r\n    update_cache: yes\r\n\r\n- name: deploy munge.key\r\n  become: yes\r\n  copy:\r\n    src: munge.key\r\n    dest: \/etc\/munge\/munge.key\r\n    owner: munge\r\n    group: munge\r\n    mode: 0600\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>[ansible@vpn ansible-playbooks]$ ansible-playbook -i inventory.ini init.yml --ask-become-pass\r\nBECOME password:\r\n[WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details\r\n\r\n\r\nPLAY [main.yml] *****************************************************************************************************************************************************************************************************************************\r\n\r\nTASK [Gathering Facts] **********************************************************************************************************************************************************************************************************************\r\nok: [ctl]\r\nok: [balthasar]\r\nok: [casper]\r\nok: [melchior]\r\n\r\nTASK [copy-hosts : deploy hosts] ************************************************************************************************************************************************************************************************************\r\nok: [ctl]\r\nok: [melchior]\r\nok: [balthasar]\r\nok: [casper]\r\n\r\nTASK [install-MPI_OPENMP : install mpich] ***************************************************************************************************************************************************************************************************\r\nchanged: [ctl]\r\nchanged: [balthasar]\r\nchanged: [casper]\r\nchanged: [melchior]\r\n\r\nTASK [install-MPI_OPENMP : install mpich-devel] *********************************************************************************************************************************************************************************************\r\nchanged: [ctl]\r\nchanged: [casper]\r\nchanged: [melchior]\r\nchanged: [balthasar]\r\n\r\nTASK [install-MPI_OPENMP : install mpich-doc] ***********************************************************************************************************************************************************************************************\r\nchanged: [ctl]\r\nchanged: [melchior]\r\nchanged: [casper]\r\nchanged: [balthasar]\r\n\r\nTASK [install-MPI_OPENMP : install openmpi] *************************************************************************************************************************************************************************************************\r\nchanged: [ctl]\r\nchanged: [melchior]\r\nchanged: [casper]\r\nchanged: [balthasar]\r\n\r\nTASK [install-MPI_OPENMP : install openmpi] *************************************************************************************************************************************************************************************************\r\nchanged: [ctl]\r\nchanged: [melchior]\r\nchanged: [casper]\r\nchanged: [balthasar]\r\n\r\nTASK [install-MPI_OPENMP : install libomp] **************************************************************************************************************************************************************************************************\r\nchanged: [ctl]\r\nchanged: [balthasar]\r\nchanged: [casper]\r\nchanged: [melchior]\r\n\r\nTASK [install-MPI_OPENMP : install libomp-test] *********************************************************************************************************************************************************************************************\r\nchanged: [ctl]\r\nchanged: [balthasar]\r\nchanged: [melchior]\r\nchanged: [casper]\r\n\r\nTASK [install-MPI_OPENMP : install libomp-devel] ********************************************************************************************************************************************************************************************\r\nok: [ctl]\r\nok: [melchior]\r\nok: [casper]\r\nok: [balthasar]\r\n\r\nTASK [install-MPI_OPENMP : install slurm] ***************************************************************************************************************************************************************************************************\r\nchanged: [ctl]\r\nchanged: [melchior]\r\nchanged: [balthasar]\r\nchanged: [casper]\r\n\r\nTASK [install-MPI_OPENMP : deploy munge.key] ************************************************************************************************************************************************************************************************\r\nchanged: [ctl]\r\nchanged: [balthasar]\r\nchanged: [melchior]\r\nchanged: [casper]\r\n\r\nPLAY RECAP **********************************************************************************************************************************************************************************************************************************\r\nbalthasar                  : ok=12   changed=9    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0\r\ncasper                     : ok=12   changed=9    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0\r\nctl                        : ok=12   changed=9    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0\r\nmelchior                   : ok=12   changed=9    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0\r\n<\/code><\/pre>\n<p>\u6240\u4ee5\uff0c\u7136\u540e\u53ea\u9700\u8981\u521b\u5efa\u5e76\u6267\u884c\u5b9a\u671f\u66f4\u65b0\u7684\u64ad\u653e\u4e66\u6765\u5b8c\u6210\u3002<\/p>\n<pre class=\"post-pre\"><code>---\r\n- name: update packages\r\n  become: yes\r\n  dnf:\r\n    name: \"*\"\r\n    state: latest\r\n    update_cache: yes\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>---\r\n- name: main.yml\r\n  hosts: linux-servers\r\n  remote_user: ansible\r\n  roles:\r\n    - update\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>[ansible@vpn ansible-playbooks]$ ansible-playbook -i inventory.ini update.yml --ask-become-pass\r\nBECOME password:\r\n[WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details\r\n\r\n\r\nPLAY [main.yml] *****************************************************************************************************************************************************************************************************************************\r\n\r\nTASK [Gathering Facts] **********************************************************************************************************************************************************************************************************************\r\nok: [balthasar]\r\nok: [melchior]\r\nok: [ctl]\r\nok: [casper]\r\n\r\nPLAY RECAP **********************************************************************************************************************************************************************************************************************************\r\nbalthasar                  : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0\r\ncasper                     : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0\r\nctl                        : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0\r\nmelchior                   : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0\r\n<\/code><\/pre>\n<p>\u7ed3\u675f\u4e86\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u65e2\u306b\u69cb\u7bc9\u6e08\u307f\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u4f7f\u7528\u3057\u3066\u4e00\u62ec\u3067\u8a2d\u5b9a\u3092\u884c\u3044\u307e\u3059\u3002\u5148\u307b\u3069\u306e\u518d\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306b\u3088\u308a\u3001SLURM\u306a\u3069\u3082\u518d\u5ea6\u30a4 [&hellip;]<\/p>\n","protected":false},"author":6,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-43058","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u73b0\u5728\u518d\u6b21\u8d70\u5411\u9b54\u6cd5\u5496\u7cfb\u7edf\u7684\u9053\u8def\uff5e\u91c7\u7528Ansible\u524d\u8fdb\u5427\uff5e - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/zh\/blog\/\u73b0\u5728\u518d\u6b21\u8d70\u5411\u9b54\u6cd5\u5496\u7cfb\u7edf\u7684\u9053\u8def\uff5e\u91c7\u7528ansible\u524d\u8fdb\u5427\uff5e\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u73b0\u5728\u518d\u6b21\u8d70\u5411\u9b54\u6cd5\u5496\u7cfb\u7edf\u7684\u9053\u8def\uff5e\u91c7\u7528Ansible\u524d\u8fdb\u5427\uff5e\" \/>\n<meta property=\"og:description\" content=\"\u65e2\u306b\u69cb\u7bc9\u6e08\u307f\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u4f7f\u7528\u3057\u3066\u4e00\u62ec\u3067\u8a2d\u5b9a\u3092\u884c\u3044\u307e\u3059\u3002\u5148\u307b\u3069\u306e\u518d\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306b\u3088\u308a\u3001SLURM\u306a\u3069\u3082\u518d\u5ea6\u30a4 [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/\u73b0\u5728\u518d\u6b21\u8d70\u5411\u9b54\u6cd5\u5496\u7cfb\u7edf\u7684\u9053\u8def\uff5e\u91c7\u7528ansible\u524d\u8fdb\u5427\uff5e\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2023-07-27T23:53:07+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-30T10:05:17+00:00\" \/>\n<meta name=\"author\" content=\"\u6587, \u7fd4\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u6587, \u7fd4\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e7%8e%b0%e5%9c%a8%e5%86%8d%e6%ac%a1%e8%b5%b0%e5%90%91%e9%ad%94%e6%b3%95%e5%92%96%e7%b3%bb%e7%bb%9f%e7%9a%84%e9%81%93%e8%b7%af%ef%bd%9e%e9%87%87%e7%94%a8ansible%e5%89%8d%e8%bf%9b%e5%90%a7%ef%bd%9e\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e7%8e%b0%e5%9c%a8%e5%86%8d%e6%ac%a1%e8%b5%b0%e5%90%91%e9%ad%94%e6%b3%95%e5%92%96%e7%b3%bb%e7%bb%9f%e7%9a%84%e9%81%93%e8%b7%af%ef%bd%9e%e9%87%87%e7%94%a8ansible%e5%89%8d%e8%bf%9b%e5%90%a7%ef%bd%9e\/\",\"name\":\"\u73b0\u5728\u518d\u6b21\u8d70\u5411\u9b54\u6cd5\u5496\u7cfb\u7edf\u7684\u9053\u8def\uff5e\u91c7\u7528Ansible\u524d\u8fdb\u5427\uff5e - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2023-07-27T23:53:07+00:00\",\"dateModified\":\"2024-04-30T10:05:17+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/64d5cc7727fffbff2f9a2a8da1de3e5c\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e7%8e%b0%e5%9c%a8%e5%86%8d%e6%ac%a1%e8%b5%b0%e5%90%91%e9%ad%94%e6%b3%95%e5%92%96%e7%b3%bb%e7%bb%9f%e7%9a%84%e9%81%93%e8%b7%af%ef%bd%9e%e9%87%87%e7%94%a8ansible%e5%89%8d%e8%bf%9b%e5%90%a7%ef%bd%9e\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/%e7%8e%b0%e5%9c%a8%e5%86%8d%e6%ac%a1%e8%b5%b0%e5%90%91%e9%ad%94%e6%b3%95%e5%92%96%e7%b3%bb%e7%bb%9f%e7%9a%84%e9%81%93%e8%b7%af%ef%bd%9e%e9%87%87%e7%94%a8ansible%e5%89%8d%e8%bf%9b%e5%90%a7%ef%bd%9e\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e7%8e%b0%e5%9c%a8%e5%86%8d%e6%ac%a1%e8%b5%b0%e5%90%91%e9%ad%94%e6%b3%95%e5%92%96%e7%b3%bb%e7%bb%9f%e7%9a%84%e9%81%93%e8%b7%af%ef%bd%9e%e9%87%87%e7%94%a8ansible%e5%89%8d%e8%bf%9b%e5%90%a7%ef%bd%9e\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u73b0\u5728\u518d\u6b21\u8d70\u5411\u9b54\u6cd5\u5496\u7cfb\u7edf\u7684\u9053\u8def\uff5e\u91c7\u7528Ansible\u524d\u8fdb\u5427\uff5e\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/64d5cc7727fffbff2f9a2a8da1de3e5c\",\"name\":\"\u6587, \u7fd4\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/920c3d673e0bccacc98e5e6b7149bb3c22edd8d39cb753e5d7d7e471498118a1?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/920c3d673e0bccacc98e5e6b7149bb3c22edd8d39cb753e5d7d7e471498118a1?s=96&d=mm&r=g\",\"caption\":\"\u6587, \u7fd4\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/wenxiang\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e7%8e%b0%e5%9c%a8%e5%86%8d%e6%ac%a1%e8%b5%b0%e5%90%91%e9%ad%94%e6%b3%95%e5%92%96%e7%b3%bb%e7%bb%9f%e7%9a%84%e9%81%93%e8%b7%af%ef%bd%9e%e9%87%87%e7%94%a8ansible%e5%89%8d%e8%bf%9b%e5%90%a7%ef%bd%9e\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u73b0\u5728\u518d\u6b21\u8d70\u5411\u9b54\u6cd5\u5496\u7cfb\u7edf\u7684\u9053\u8def\uff5e\u91c7\u7528Ansible\u524d\u8fdb\u5427\uff5e - Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/zh\/blog\/\u73b0\u5728\u518d\u6b21\u8d70\u5411\u9b54\u6cd5\u5496\u7cfb\u7edf\u7684\u9053\u8def\uff5e\u91c7\u7528ansible\u524d\u8fdb\u5427\uff5e\/","og_locale":"zh_CN","og_type":"article","og_title":"\u73b0\u5728\u518d\u6b21\u8d70\u5411\u9b54\u6cd5\u5496\u7cfb\u7edf\u7684\u9053\u8def\uff5e\u91c7\u7528Ansible\u524d\u8fdb\u5427\uff5e","og_description":"\u65e2\u306b\u69cb\u7bc9\u6e08\u307f\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u4f7f\u7528\u3057\u3066\u4e00\u62ec\u3067\u8a2d\u5b9a\u3092\u884c\u3044\u307e\u3059\u3002\u5148\u307b\u3069\u306e\u518d\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306b\u3088\u308a\u3001SLURM\u306a\u3069\u3082\u518d\u5ea6\u30a4 [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/\u73b0\u5728\u518d\u6b21\u8d70\u5411\u9b54\u6cd5\u5496\u7cfb\u7edf\u7684\u9053\u8def\uff5e\u91c7\u7528ansible\u524d\u8fdb\u5427\uff5e\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2023-07-27T23:53:07+00:00","article_modified_time":"2024-04-30T10:05:17+00:00","author":"\u6587, \u7fd4","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u6587, \u7fd4","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"7 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e7%8e%b0%e5%9c%a8%e5%86%8d%e6%ac%a1%e8%b5%b0%e5%90%91%e9%ad%94%e6%b3%95%e5%92%96%e7%b3%bb%e7%bb%9f%e7%9a%84%e9%81%93%e8%b7%af%ef%bd%9e%e9%87%87%e7%94%a8ansible%e5%89%8d%e8%bf%9b%e5%90%a7%ef%bd%9e\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/%e7%8e%b0%e5%9c%a8%e5%86%8d%e6%ac%a1%e8%b5%b0%e5%90%91%e9%ad%94%e6%b3%95%e5%92%96%e7%b3%bb%e7%bb%9f%e7%9a%84%e9%81%93%e8%b7%af%ef%bd%9e%e9%87%87%e7%94%a8ansible%e5%89%8d%e8%bf%9b%e5%90%a7%ef%bd%9e\/","name":"\u73b0\u5728\u518d\u6b21\u8d70\u5411\u9b54\u6cd5\u5496\u7cfb\u7edf\u7684\u9053\u8def\uff5e\u91c7\u7528Ansible\u524d\u8fdb\u5427\uff5e - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2023-07-27T23:53:07+00:00","dateModified":"2024-04-30T10:05:17+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/64d5cc7727fffbff2f9a2a8da1de3e5c"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e7%8e%b0%e5%9c%a8%e5%86%8d%e6%ac%a1%e8%b5%b0%e5%90%91%e9%ad%94%e6%b3%95%e5%92%96%e7%b3%bb%e7%bb%9f%e7%9a%84%e9%81%93%e8%b7%af%ef%bd%9e%e9%87%87%e7%94%a8ansible%e5%89%8d%e8%bf%9b%e5%90%a7%ef%bd%9e\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/%e7%8e%b0%e5%9c%a8%e5%86%8d%e6%ac%a1%e8%b5%b0%e5%90%91%e9%ad%94%e6%b3%95%e5%92%96%e7%b3%bb%e7%bb%9f%e7%9a%84%e9%81%93%e8%b7%af%ef%bd%9e%e9%87%87%e7%94%a8ansible%e5%89%8d%e8%bf%9b%e5%90%a7%ef%bd%9e\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e7%8e%b0%e5%9c%a8%e5%86%8d%e6%ac%a1%e8%b5%b0%e5%90%91%e9%ad%94%e6%b3%95%e5%92%96%e7%b3%bb%e7%bb%9f%e7%9a%84%e9%81%93%e8%b7%af%ef%bd%9e%e9%87%87%e7%94%a8ansible%e5%89%8d%e8%bf%9b%e5%90%a7%ef%bd%9e\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"\u73b0\u5728\u518d\u6b21\u8d70\u5411\u9b54\u6cd5\u5496\u7cfb\u7edf\u7684\u9053\u8def\uff5e\u91c7\u7528Ansible\u524d\u8fdb\u5427\uff5e"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website","url":"https:\/\/www.silicloud.com\/zh\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/64d5cc7727fffbff2f9a2a8da1de3e5c","name":"\u6587, \u7fd4","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/920c3d673e0bccacc98e5e6b7149bb3c22edd8d39cb753e5d7d7e471498118a1?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/920c3d673e0bccacc98e5e6b7149bb3c22edd8d39cb753e5d7d7e471498118a1?s=96&d=mm&r=g","caption":"\u6587, \u7fd4"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/wenxiang\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e7%8e%b0%e5%9c%a8%e5%86%8d%e6%ac%a1%e8%b5%b0%e5%90%91%e9%ad%94%e6%b3%95%e5%92%96%e7%b3%bb%e7%bb%9f%e7%9a%84%e9%81%93%e8%b7%af%ef%bd%9e%e9%87%87%e7%94%a8ansible%e5%89%8d%e8%bf%9b%e5%90%a7%ef%bd%9e\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/43058","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=43058"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/43058\/revisions"}],"predecessor-version":[{"id":93452,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/43058\/revisions\/93452"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=43058"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=43058"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=43058"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}