============ Installation ============ Prerequisites ------------- * Install possibly required package for deploying Fuxi or running `fuxi-server`. Ubuntu :: $ sudo apt-get update $ sudo apt-get install python-dev git libffi-dev libssl-dev gcc $ sudo apt-get install open-iscsi # Install when using iSCSI client to connect remote volume $ sudo apt-get install sysfsutils # Install when os_brick package and iSCSI client used CentOS :: $ sudo yum -y install python-devel git gcc openssl-devel $ sudo yum install iscsi-initiator-utils # Install when using iSCSI client to connect remote volume $ sudo yum install sysfsutils # Install when os_brick package and iSCSI client used * Install requirements. :: $ curl https://bootstrap.pypa.io/get-pip.py | sudo python $ git clone https://github.com/openstack/fuxi.git $ cd fuxi $ sudo pip install -r requirements.txt If `fuxi-server` run with non-root user, it is expected to enable `fuxi-server` to execute some Linux command without password interact. Installing Fuxi --------------- :: $ sudo python setup.py install Configuring Fuxi ---------------- After installing Fuxi, generate sample config, etc/fuxi.conf.sample, running the following: :: $ ./tools/generate_config_file_samples.sh Rename and copy config file at required path: :: $ sudo cp etc/fuxi.conf.sample /etc/fuxi/fuxi.conf Then edit it. * Default section :: [DEFAULT] my_ip = MY_IP # The IP of host that Fuxi deployed on volume_providers = cinder # The enable volume provider for Fuxi * Cinder section :: [cinder] region_name = REGION_NAME # Region name of this node. This is used when picking the URL in the service catalog. auth_url = AUTH_URL # For example, it can be http://127.0.0.1:35357/v3/ username = ADMIN_USER user_domain_name = Default password = ADMIN_PASSWORD project_name = service project_domain_name = Default auth_type = password volume_connector = VOLUME_CONNECTOR # The way to connect to volume. For Cinder, this could chose from `[openstack, osbrick]` fstype = ext4 # Default filesystem type to format, if not provided from request * Nova section :: [nova] region_name = REGION_NAME # Region name of this node. This is used when picking the URL in the service catalog. auth_url = AUTH_URL # For example, it can be http://127.0.0.1:35357/v3/ username = ADMIN_USER user_domain_name = Default password = ADMIN_PASSWORD project_name = service project_domain_name = Default auth_type = password Running Fuxi ------------ Fuxi could run with root user permission or non-root use permission. In order to make `fuxi-server` working normally, some extra config is inevitable. For root user, when iSCSI client is used :: $ ln -s /lib/udev/scsi_id /usr/local/bin For non-root user :: $ echo "fuxi ALL=(root) NOPASSWD: /usr/local/bin/fuxi-rootwrap /etc/fuxi/rootwrap.conf *" | sudo tee /etc/sudoers.d/fuxi-rootwrap Here user `fuxi` should be changed to the user run `fuxi-server` on your host. Start `fuxi-server` :: $ fuxi-server --config-file /etc/fuxi/fuxi.conf Testing Fuxi ------------ :: $ docker volume create --driver fuxi --name test_vol -o size=1 -o fstype=ext4 -o multiattach=true test_vol $ docker volume ls DRIVER VOLUME NAME fuxi test_vol