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