Criando o archive ConnectToExternalGPFSServer

Use o código de exemplo que é fornecido para criar um archive customizado que pode ser importado no catálogo do Cloud Pak System para uso na conexão do IBM Spectrum Scale Client com o IBM Spectrum Scale Serverexterno.

Sobre esta tarefa

Use o código de amostra que é fornecido para criar um script python e um arquivo cbscript.json que você inclui em um archive para ser importado para o catálogo de pacotes de scripts do Cloud Pak System

Procedimento

  1. Criar um arquivo de script python e nomeá-lo connect.py. Inclua o código a seguir para se conectar ao IBM Spectrum Scale Serverexterno:
    #!/usr/bin/env python
    
    import sys
    import subprocess
    import os
    
    clusterName = sys.argv[1]
    print "cluster name: " + clusterName
    nodelist = sys.argv[2]
    print "node list: " + nodelist
    filesystem = sys.argv[3]
    print "file system: " + filesystem
    print "mountpoint: /gpfs%s" % filesystem
    fileset = sys.argv[4]
    print "fileset: " + fileset
    linkdir = sys.argv[5]
    print "link directory: " + linkdir
    
    def runShellQuick(cmd):
            print cmd
            p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
            (out,err) = p.communicate()
            rc = p.returncode
            print "RC is: "+str(rc)
            print "Message(1) is:  "+str(out)
            print "Message(2) is: "+str(err)
    
            if rc > 0:
                raise Exception("The command: %s, had a return code of %d, not 0" % (str(cmd), rc))
            
    try:
        mountpoint='/gpfs/%s' % filesystem
        serverKeyPath = "/var/mmfs/ssl/" + clusterName + "_id_rsa.pub"
        runShellQuick("/usr/lpp/mmfs/bin/mmremotecluster add "+clusterName+" -n "+nodelist+" -k "+serverKeyPath)
        runShellQuick("/usr/lpp/mmfs/bin/mmremotefs add "+filesystem+" -f "+filesystem+" -C "+clusterName+" 
        -A yes -T "+mountpoint)
        runShellQuick("/usr/lpp/mmfs/bin/mmmount "+filesystem)
        runShellQuick("ln -s %s/%s %s" % (mountpoint, fileset, linkdir))
        runShellQuick("/usr/lpp/mmfs/bin/mmremotecluster show")
        runShellQuick("/usr/lpp/mmfs/bin/mmremotefs show")
    except:
        print sys.exc_info()[1]
        sys.exit(-1)
    Esse script requer os parâmetros a seguir:
    SERVER_CLUSTER_NAME
    (especificado como argv[1]): O nome do cluster de servidores. Por exemplo, test111Cluster.purescale.raleigh.ibm.com. É possível localizar o nome do cluster de servidores, executando o IBM comando Spectrum Scale /usr/lpp/mmfs/bin/mmlscluster em qualquer um dos nós do servidor
    NODE_LIST
    (especificado como argv[2]): Uma lista separada por vírgula de um ou mais nós de servidor. Especifique esses nós como endereços IP. É possível localizar a lista de IPs de nós do cluster de servidores executando o comando do IBM Spectrum Scale /usr/lpp/mmfs/bin/mmlscluster em qualquer um dos nós de servidor.
    FILE_SYSTEM
    (specified as argv[3]): O sistema de arquivo compartilhado no servidor ao qual o cliente está solicitando acesso. Esse sistema de arquivos deve existir no cluster de servidores. É possível localizar a lista de nomes de sistema de arquivos disponíveis executando o comando do IBM Spectrum Scale /usr/lpp/mmfs/bin/mmlscluster em qualquer um dos nós de servidor.
    FILE_SET
    (especificado como argv[5]): o conjunto de arquivos que é criado no servidor e disponibilizado para o cliente.
    LINK_DIR
    (especificado como argv[6]): O diretório de links para criar no cliente. Use o seguinte formato: /testFileLink

    Como um teste de verificação, este script inclui dois comandos do IBM Spectrum Scale que exibem o cluster remoto e o sistema de arquivos para o qual o cliente está conectado.

  2. Crie um arquivo cbscript.json para o arquivo de arquivo que inclui o seguinte código:
    [
       {
          "execmode": 2,
          "type": "APPLICATION",
          "name": "Connect to External GPFS Server",
          "description": "Connect to External GPFS Server",
          "location": "/tmp/gpfs/scriptpackage2",
          "command": "/tmp/gpfs/scriptpackage2/connect.py",
          "version": "1.0",
          "log": "/tmp/gpfs/scriptpackage2",
          "ostype": "linux/unix",
          "timeout": 60000000,
          "keys": [
             {
                "type": "string",
                "scriptkey": "SERVER_CLUSTER_NAME",
                "scriptdefaultvalue": "",
                "description": "Server Cluster Name",
                "locked": false,
                "required": false
             },
             {
                "type": "string",
                "scriptkey": "NODE_LIST",
                "scriptdefaultvalue": "",
                "description": "A list of server cluster nodes, comma separated",
                "locked": false,
                "required": false
             },
             {
                "type": "string",
                "scriptkey": "FILE_SYSTEM",
                "scriptdefaultvalue": "fileSystemName",
                "description": "File System on Server. The file system must exist on server.",
                "locked": false,
                "required": false
             },
             {
                "type": "string",
                "scriptkey": "FILE_SET",
                "scriptdefaultvalue": "fileset1",
                "description": "Fileset created on the server, using existing one if already created",
                "locked": false,
                "required": false
             },
             {
                "type": "string",
                "scriptkey": "LINK_DIR",
                "scriptdefaultvalue": "/filesetLink1",
                "description": "Directory on the client vm to link to the server fileset",
                "locked": false,
                "required": false
             }
          ],
          "commandargs": "$SERVER_CLUSTER_NAME $NODE_LIST $FILE_SYSTEM $FILE_SET $LINK_DIR"
       }
    ]

    O atributo execmode é configurado com um valor 2, indicando que esse pacote de scripts é executado manualmente apenas após a implementação.

  3. Incluir esses arquivos em um arquivo compactado e nomeá-lo connecttoexternalgpfsserver.tgz.