計算ノードへの slurm-slurmd パッケージの配布とインストールおよびその後の設定ファイル slurm.conf の配布が面倒なのでAnsibleを入れる事にした

[root@slurm ~]# yum install -y epel-release
[root@slurm ~]# yum install -y ansible

既に計算ノードはクラスターとして nis あるいは samba-ad の配下であってアカウント情報を共有しているとします.

計算ノードへ munge のインストール

[root@slurm ~]# cat munge.yml
- hosts: all
  tasks:
  - name: install epel repository
    yum: name=epel-release state=latest
  - name: install munge packages
    yum: name=munge  state=latest
  - name: copy munge key file
    copy:
      src=/etc/munge/munge.key
      dest=/etc/munge/munge.key
      owner=munge
      group=munge
      mode=0400
  - name: enable munge.service
    systemd:
      name: munge.service
      state: started
      enabled: yes
[root@slurm ~]#

実行コマンドは

[root@slurm ~]#  ansible-playbook munge.yml -i n1,n2,n3, --user root --ask-pass

各計算ノードのrootのパスワードが同じなら使える手段かな...大抵は一般ユーザで相手方にログインしてsudoでインストールなのでしょうけど...

epel由来のslurmを使いたくないなら

epelリポジトリのファイルを別名保存して、目的のファイルに差し替える

[root@slurm ~]# cat epel.yml
- hosts: all
  tasks:
  - name: Now date
    shell: date "+%Y%m%d%H%M"
    register: today
  - name: backup epel
    command: mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.{ { today.stdout } }
  - name: Replacement
    copy:
      dest: /etc/yum.repos.d/epel.repo
      content: |
         [epel]
         name=Extra Packages for Enterprise Linux 7 - $basearch
         #baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch
         metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch&infra=$infra&content=$contentdir
         failovermethod=priority
         enabled=1
         gpgcheck=1
         gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
         exclude=slurm*
[root@slurm ~]#

*pukiwikiの表記規則から、「{{」を「{ {」に。「}}」を「} }」にしています
「exclude=slurm*」でepel由来のslurmを禁止にしてます

計算ノードへパッケージを送ってインストール

[root@slurm ~]# vi slurm.yml
- hosts: all
  tasks:
  - name: copy slurm master package
    copy: src=/root/rpmbuild/RPMS/x86_64/slurm-20.11.5-1.el7.x86_64.rpm        dest=/root/
 
  - name: copy slurm compute node package
    copy: src=/root/rpmbuild/RPMS/x86_64/slurm-slurmd-20.11.5-1.el7.x86_64.rpm dest=/root/
 
  - name: install slrum packages
    yum:
       name: "{ { files } }"
    vars:
      files:
         - /root/slurm-20.11.5-1.el7.x86_64.rpm
         - /root/slurm-slurmd-20.11.5-1.el7.x86_64.rpm
 
  - name: enable slurmd
    systemd:
      name: slurmd.service
      enabled: yes
 
  - name: create slurmd etc
    file: path=/etc/slurm state=directory owner=root group=root mode=0755
 
  - name: create slurmd spool
    file: path=//var/spool/slurm state=directory owner=slurm group=slurm mode=0755
 
  - name: firewalld
    firewalld: port=6818/tcp zone=public permanent=true state=enabled immediate=true
 
[root@slurm ~]# ansible-playbook slurm.yml -i n1,n2,n3, --user root --ask-pass

slurmd.confを差し替える. もし計算ノードなら slurmdを再起動

[root@slurm ~]# cat slurm-restart.yml
- hosts: all
  tasks:
  - name: Now date
    shell: date "+%Y%m%d%H%M"
    register: today
 
  - name: slurm conf file check
    stat:
      path: /etc/slurm/slurm.conf
    register: conf_stat
 
  - name: check slurm-slurmd package
    yum:
      list=slurm-slurmd
    register: pkg
 
  - name: backup slurm conf file
    command: mv /etc/slurm/slurm.conf /etc/slurm/slurm.conf.{ { today.stdout } }
    when: conf_stat.stat.exists == True
 
  - name: copy slurm conf file
    copy: src=/etc/slurm/slurm.conf dest=/etc/slurm/slurm.conf owner=slurm group=slurm mode=0644
 
  - name: slurmd restart
    systemd:
      name: slurmd.service
      state: restarted
    when: pkg.results|selectattr("yumstate", "match", "installed")|list|length != 0
 
[root@slurm ~]#
[root@slurm ~]# ansible-playbook slurm-restart.yml -i n1,n2,n3, --user root --ask-pass

トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2021-04-19 (月) 01:00:51 (64d)