Yuneta

What is Yuneta?

Yuneta is a C development framework for Linux.

Internal features:
  • asynchronous I/O, based in the C libuv library, the platform of node.js.
  • structured data, based in ASN.1 standard (like snmp and ldap protocols).
  • json data, based in the C jansson library.
  • finite state machine, based in the C ginsfsm library, who theoretical basis is the Python GinsFSM.
  • communication between yunos by json messages.

Yuneta goal is create daemons or cli’s, also called yunos.

Yuneta also give you a platform for deploy and operation of yunos.

A yuno can be a standalone program, ie, a utility, or can be a collaborator program, ie, a service, living in a realm sharing the world with others yunos.

All C code of yuneta project is compiled with cmake.

Some utilities are written in Python.

The little documentation is built with Sphinx

Operation

Use yuneta command line interface utility to deploy and operate yunos.

Creating yunos

Use yunotemplate utility to create source code of new yunos and gclasess.

Installation

Yuneta uses fixed directories for develop and deploy/operation, associated with a shared group (development and deploy).

  • /opt/development

    Shared group directory for development.

    Include the Yuneta source code and your projects.

  • /opt/deploy

    Shared group directory for deploy and operation of realms and yunos.

Note

You can read about Linux permissions in Linux permissions demystified.

To install Yuneta follow the next instructions in order.

AS SUDO

These commands must be executed by a sudo user.

download this script.

  • Create the file /etc/profile.d/yuneta.sh and add the next content:

    if [ $UID -gt 199 ]; then
        umask 002
        ulimit -c unlimited
    fi
    

ulimit -c unlimited to set core unlimited.

umask 002 to set group write permission for new files and directories.

  • Add the following line to /etc/sysctl.conf:

    kernel.core_pattern = core.%e
    
  • Load sysctl settings:

    sysctl -p
    
  • Create the shared user/group development:

    adduser development
    chmod 775 /opt/development/
    chmod g+s /opt/development/
    
  • Create the shared user/group deploy:

    adduser deploy
    chmod 775 /opt/deploy/
    chmod g+s /opt/deploy/
    
  • Install next packages:

    • With apt-get:

      apt-get install kdevelop git mercurial
      apt-get install autotools-dev automake autogen libtool
      apt-get install libpython-all-dev python-setuptools
      apt-get install texlive-full
      apt-get install tree vim
      apt-get install libpcre3-dev zlib1g-dev
      apt-get install libcurl4-openssl-dev libssl-dev libldap2-dev libidn11-dev librtmp-dev
      apt-get install libreadline-dev libeditline-dev liblzma-dev libbz2-dev
      easy_install -U sphinx
      apt-get install libgcrypt20-dev
      apt-get install libncurses5-dev libncursesw5-dev ncurses-doc
      apt-get install python-ldap libsasl2-dev
      
    • With yum:

      yum install python-tools python-devel
      yum install textlive texlive-latex
      yum install mercurial git cvs
      yum install automake libtool
      yum install tree
      yum install cmake
      yum install pcre-devel
      yum install libcurl-devel openssl openssl-devel openssl-static
      yum install openldap openldap-devel xz-libs xz-devel libidn-devel libssh2 libssh2-devel
      yum install readline-devel libedit-devel bzip2-devel
      easy_install -U sphinx
      yum install zlib-devel
      yum install libgcrypt-devel
      yum install ncurses-devel ncurses-term ncurses-libs ncurses
      yum install python-ldap libsasl2-dev
      
  • Create the users that you want they belong to the yuneta or development group:

    adduser *yourname*
    
    usermod -a -G deploy *yourname*
    
    usermod -a -G development *yourname*
    

Warning

Remember re-login if you are the user executing this script and added as a new member of development or yuneta.

AS USER member of deploy group (NO SUDO PLEASE!)

These commands must be executed by a user member of deploy group.

dowload this script.

By a deploy‘s user:

mkdir /opt/deploy/bin
mkdir /opt/deploy/projects
mkdir /opt/deploy/output
mkdir /opt/deploy/yuneta

Clone gobj-ecosistema:

mkdir -p /opt/development/yuneta/^gobj-ecosistema-v1/
hg clone https://gobj-ecosistema@bitbucket.org/gobj-ecosistema/docs             /opt/development/yuneta/^gobj-ecosistema-v1/docs
hg clone https://gobj-ecosistema@bitbucket.org/gobj-ecosistema/external-libs    /opt/development/yuneta/^gobj-ecosistema-v1/external-libs
hg clone https://gobj-ecosistema@bitbucket.org/gobj-ecosistema/ghelpers         /opt/development/yuneta/^gobj-ecosistema-v1/ghelpers
hg clone https://gobj-ecosistema@bitbucket.org/gobj-ecosistema/ginsfsm          /opt/development/yuneta/^gobj-ecosistema-v1/ginsfsm

Clone yuneta:

mkdir -p /opt/development/yuneta/^yuneta-v1/
hg clone https://yuneta@bitbucket.org/yuneta/c-core                 /opt/development/yuneta/^yuneta-v1/c-core
hg clone https://yuneta@bitbucket.org/yuneta/docs                   /opt/development/yuneta/^yuneta-v1/docs
hg clone https://yuneta@bitbucket.org/yuneta/yunotemplate           /opt/development/yuneta/^yuneta-v1/yunotemplate
hg clone https://yuneta@bitbucket.org/yuneta/yuno_agent             /opt/development/yuneta/^yuneta-v1/yuno_agent
hg clone https://yuneta@bitbucket.org/yuneta/yuno_cli               /opt/development/yuneta/^yuneta-v1/yuno_cli

Build gobj-ecosistema:

cd /opt/development/yuneta/^gobj-ecosistema-v1/external-libs
./configure-libs.sh
./make-libs.sh
./install-libs.sh

cd /opt/development/yuneta/^gobj-ecosistema-v1/ghelpers
mkdir build
cd build
cmake ..
make
make install

cd /opt/development/yuneta/^gobj-ecosistema-v1/ginsfsm
mkdir build
cd build
cmake ..
make
make install

Build yuneta:

cd /opt/development/yuneta/^yuneta-v1/c-core
mkdir build
cd build
cmake ..
make
make install

cd /opt/development/yuneta/^yuneta-v1/yuno_agent
mkdir build
cd build
cmake ..
make
make install

cd /opt/development/yuneta/^yuneta-v1/yuno_cli
mkdir build
cd build
cmake ..
make
make install

virtualenv /opt/development/env_stratus
source /opt/development/env_stratus
cd /opt/development/yuneta/^yuneta-v1/yunotemplate
python setup.py install
deactivate

Install the agent yuno:

cd /opt/deploy/bin/service
sudo ./install-yuneta-service.sh

Repair development and deploy directories

Note

To repair the development group:

sudo chown :development /opt/development/ -R
sudo chmod g+w /opt/development/ -R
sudo chmod g+r /opt/development/ -R
sudo find /opt/development/ -type d -exec chmod g+s {} +

To repair the yuneta group:

sudo chown :deploy /opt/deploy/ -R
sudo chmod g+w /opt/deploy/ -R
sudo chmod g+r /opt/deploy/ -R
sudo find /opt/deploy/ -type d -exec chmod g+s {} +

Indices and tables