github.com/swiftstack/ProxyFS@v0.0.0-20210203235616-4017c267d62f/ci/ansible/tasks/installer_without_chef.yml (about)

     1  # This is an attempt to re-write the Chef ProxyFS installer in Ansible
     2  # WORK IN PROGRESS, NOT PRODUCTION READY AT ALL!
     3  - hosts: all
     4    name: Install and start ProxyFS
     5    vars:
     6      tarfile_name: "go1.10.linux-amd64.tar.gz"
     7      tarfile_path: "/tmp/{{ tarfile_name }}"
     8      tarfile_url: "https://dl.google.com/go/{{ tarfile_name }}"
     9      source_root: "/home/swiftstack/provisioning"
    10      proxyfs_user: "swiftstack"
    11      proxyfs_group: "swiftstack"
    12      is_dev: node['is_dev_environment']
    13      GOROOT: "/usr/local/go"
    14      HOME_DIR: "/home/{{ proxyfs_user }}"
    15      BASH_DOT_PROFILE: "{{ ansible_env.HOME }}/.bash_profile"
    16      REPO_CLONE_PARENT_DIR: "{{ source_root }}/src/github.com/swiftstack"
    17      SAMBA_SRC_DIR: "{{ REPO_CLONE_PARENT_DIR }}/samba"
    18      PROXYFS_SRC_DIR: "{{ REPO_CLONE_PARENT_DIR }}/ProxyFS"
    19      dot_bashrc: "{{ HOME_DIR }}/.bashrc"
    20      is_dev: False
    21      rhel_packages:
    22        # samba package
    23        - ['samba']
    24        # samba deps
    25        - ['gcc', 'gcc-c++', 'python-devel', 'gnutls-devel', 'ibacl-devel', 'openldap-devel', 'samba', 'cifs-utils']
    26        # ganesha dev packages. Unused?
    27        # - ['gcc', 'git', 'cmake', 'autoconf', 'libtool', 'bison', 'flex', 'libgssglue-dev', 'libssl-dev', 'libnfs-dev', 'doxygen']
    28        # proxyfs packages
    29        - ['json-c-devel', 'fuse']
    30        # nfs packages
    31        - ['nfs-utils']
    32      rhel_dev_packages:
    33        # wireshark packages
    34        - ['wireshark', 'libcap']
    35      debian_packages:
    36        # samba package
    37        - ['samba']
    38        # samba deps
    39        - ['gcc', 'python-dev', 'libgnutls-dev', 'libacl1-dev', 'libldap2-dev', 'samba', 'pkg-config', 'cifs-utils']
    40        # ganesha dev packages. Unused?
    41        # - ['gcc', 'git', 'cmake', 'autoconf', 'libtool', 'bison', 'flex', 'libgssglue-dev', 'libssl-dev', 'libnfs-dev', 'doxygen']
    42        # proxyfs packages
    43        - ['libjson-c-dev', 'fuse']
    44        # nfs packages
    45        - ['nfs-kernel-server', 'nfs-common']
    46      debian_dev_packages:
    47        # wireshark packages
    48        - ['wireshark', 'libcap2-bin']
    49  
    50    tasks:
    51    - name: Clone ProxyFS repo
    52      git:
    53        repo: https://github.com/swiftstack/ProxyFS.git
    54        dest: "{{ PROXYFS_SRC_DIR }}/"
    55        version: "{{ ansible_env.proxyfs_branch }}"
    56  
    57    - name: Install pfs_middleware in development mode
    58      shell: "python setup.py develop"
    59      args:
    60        chdir: "{{ ansible_env.HOME }}/provisioning/github.com/swiftstack/ProxyFS/pfs_middleware"
    61  
    62    - stat: path={{GOROOT}}
    63      register: go_installed
    64  
    65    - name: Download Go tarfile
    66      get_url:
    67        url: {{tarfile_url}}
    68        dest: {{tarfile_path}}
    69        mode: 0440
    70        owner: "root"
    71        group: "root"
    72      when: go_installed.stat.exists == False
    73  
    74    - name: Untar golang
    75      shell: "tar -C /usr/local -xzf {{tarfile_path}}"
    76      when: go_installed.stat.exists == False
    77  
    78    - name: Golang path
    79      copy:
    80        content: "export PATH=$PATH:{{GOROOT}}/bin"
    81        dest: /etc/profile.d/golang_path.sh
    82        mode: 0644
    83  
    84    - name: ".bash_profile"
    85      lineinfile:
    86        dest: {{BASH_DOT_PROFILE}}
    87        regexp: {{item.regexp}}
    88        line: {{item.line}}
    89        state: present
    90        create: True
    91        owner: {{proxyfs_user}}
    92      with_items:
    93        - {regexp: "/export GOPATH/",       line: "export GOPATH={{source_root}}"}
    94        - {regexp: "%r{usr/local/go/bin}",  line: "export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin"}
    95        - {regexp: "/ulimit/",              line: "ulimit -c unlimited"}
    96        - {regexp: "/\. ~\/.bashrc/",       line: ". ~/.bashrc"}
    97        - {regexp: "/\. ~\/.profile/",      line: "if [ -f ~/.profile ]; then . ~/.profile; fi"}
    98  
    99    - name: ".bashrc"
   100      lineinfile:
   101        dest: {{dot_bashrc}}
   102        regexp: {{item.regexp}}
   103        line: {{item.line}}
   104        state: present
   105        create: True
   106        owner: {{proxyfs_user}}
   107      with_items:
   108        - {regexp: "/cdpfs/",   line: "alias cdpfs='cd $GOPATH/src/github.com/swiftstack/ProxyFS'"}
   109        - {regexp: "/cdsamba/", line: "alias cdsamba='cd {{SAMBA_SRC_DIR}}'"}
   110  
   111    - name: "Disable SELinux"
   112      replace:
   113        path: "/etc/sysconfig/selinux"
   114        regexp: "/^SELINUX=enforcing/"
   115        replace: "SELINUX=permissive"
   116      when: ansible_os_family == 'RedHat'
   117  
   118    - name: "fuse_allow_other"
   119      lineinfile:
   120        path: "/etc/fuse.conf"
   121        regexp: "/#user_allow_other/"
   122        state: absent
   123        mode: 0644
   124      when: {{is_dev}}
   125  
   126    - name: "fuse_allow_other"
   127      lineinfile:
   128        path: "/etc/fuse.conf"
   129        regexp: "/^user_allow_other/"
   130        line: "user_allow_other"
   131        state: present
   132        mode: 0644
   133      when: {{is_dev}}
   134  
   135    # perms/owner don't really matter since it gets mounted over, but
   136    # this helps stop a developer from accidentally dumping stuff on the
   137    # root filesystem
   138    - name: "Create /CommonMountPoint"
   139      file:
   140        path: /CommonMountPoint
   141        state: directory
   142        owner: root
   143  
   144    - name: "Create /var/lib/proxyfs and /var/log/proxyfsd"
   145      file:
   146        path: {{item}}
   147        state: directory
   148        owner: {{proxyfs_user}}
   149        group: {{proxyfs_group}}
   150        mode: 0755
   151      with_items:
   152        - "/var/lib/proxyfs"
   153        - "/var/log/proxyfsd"
   154  
   155    - name: "Link to proxyfsd"
   156      file:
   157        src: "{{source_root}}/src/github.com/swiftstack/ProxyFS/proxyfsd/"
   158        dest: "/etc/proxyfsd"
   159        state: link
   160        owner: {{proxyfs_user}}
   161        group: {{proxyfs_group}}
   162  
   163    # TODO: Get start_and_mount_pfs file from somewhere
   164    - name: "Copy start_and_mount_pfs"
   165      file:
   166        src: "bin/start_and_mount_pfs"
   167        dest: "/usr/bin/start_and_mount_pfs"
   168        mode: 0755
   169  
   170    - name: "Provision pfs_stat"
   171      shell: "install -m 0755 {{source_root}}/src/github.com/swiftstack/ProxyFS/bin/pfs_stat /usr/bin"
   172  
   173    - stat: path=/usr/lib/systemd/system/
   174      register: system_exists
   175  
   176    # TODO: Get proxyfsd.service file from somewhere
   177    - name: "Copy proxyfsd.service"
   178      file:
   179        src: "usr/lib/systemd/system/proxyfsd.service"
   180        dest: "/usr/lib/systemd/system/proxyfsd.service"
   181      when: system_exists.stat.isdir is defined and system_exists.stat.isdir
   182  
   183    - stat: path=/etc/init
   184      register: init_exists
   185  
   186    # TODO: Get proxyfsd.upstart file from somewhere
   187    - name: "Copy proxyfsd.conf"
   188      file:
   189        src: "etc/init/proxyfsd.upstart"
   190        dest: "/etc/init/proxyfsd.conf"
   191      when: init_exists.stat.isdir is defined and init_exists.stat.isdir
   192  
   193    - name: yum install packages for proxyfs
   194      yum: name={{ item }} state=present
   195      with_items: {{rhel_packages}}
   196      when: ansible_os_family == 'RedHat'
   197  
   198    - name: yum install packages for proxyfs (only for dev environment)
   199      yum: name={{ item }} state=present
   200      with_items: {{rhel_dev_packages}}
   201      when: ansible_os_family == 'RedHat' and {{is_dev}}
   202  
   203    - name: apt install packages for proxyfs
   204      apt: name={{ item }} state=present
   205      with_items: {{debian_packages}}
   206      when: ansible_os_family == 'Debian'
   207  
   208    - name: apt install packages for proxyfs (only for dev environment)
   209      apt: name={{ item }} state=present
   210      with_items: {{debian_dev_packages}}
   211      when: ansible_os_family == 'Debian' and {{is_dev}}
   212  
   213    - name:
   214      group:
   215        name: wireshark