Monthly Archives: Dicembre 2018

RHEL7: Aggiungere porte non standard con SELinux

Nota: questo è un obiettivo d’esame RHCE 7.

Presentazione

A causa della politica SELinux, un servizio è normalmente autorizzato a funzionare su un elenco limitato di porte conosciute. Ad esempio, nel caso del servizio httpd, questo elenco è 80, 443, 488, 8008, 8009, 8443.

Per consentire a un servizio di utilizzare porte non standard, è necessario seguire una procedura specifica per modificare la politica di SELinux.

Prerequisiti

Installare il server setroubleshoot (per ottenere il comando semanage) e, opzionalmente, i pacchetti selinux-policy-devel (per ottenere il comando sepolicy):

# yum install -y setroubleshoot-server selinux-policy-devel

Installa il servizio (qui httpd) che vuoi eseguire (se non è già stato fatto):

# yum install -y httpd

Procedura SELinux

Per ottenere l’elenco di tutte le porte con restrizioni per servizio, digitare:

# semanage port -l
SELinux Port Type              Proto    Port Number

afs3_callback_port_t           tcp      7001
afs3_callback_port_t           udp      7001
afs_bos_port_t                 udp      7007
afs_fs_port_t                  tcp      2040
afs_fs_port_t                  udp      7000, 7005
afs_ka_port_t                  udp      7004
afs_pt_port_t                  udp      7002
afs_vl_port_t                  udp      7003
...
http_port_t                    tcp      80, 81, 443, 488, 8008, 8009, 8443, 9000
...
zookeeper_client_port_t        tcp      2181
zookeeper_election_port_t      tcp      3888
zookeeper_leader_port_t        tcp      2888
zope_port_t                    tcp      8021

 

Per ottenere l’elenco delle porte conosciute per il servizio httpd, digitare:

# semanage port -l | grep -w http_port_t
http_port_t                    tcp      80, 81, 443, 488, 8008, 8009, 8443, 9000

In alternativa, puoi anche usare il comando sepolicy per ottenere lo stesso risultato:

# sepolicy network -t http_port_t
http_port_t: tcp: 80,81,443,488,8008,8009,8443,9000

Per verificare se una porta è già utilizzata (qui 8001), digitare:

# sepolicy network -p 8001
8001: tcp unreserved_port_t 1024-32767
8001: udp unreserved_port_t 1024-32767

Per consentire l’esecuzione del servizio httpd sulla porta tcp 8001 (-a per aggiungere), digitare:

# semanage port -a -t http_port_t -p tcp 8001

Nota 1: utilizzare l’opzione -d anziché l’opzione -a per rimuovere una porta dall’elenco.
Nota 2: Nel caso in cui la porta tcp 8001 sia già assegnata ad un altro servizio, utilizzare l’opzione -m (per ulteriori informazioni consultare le domande frequenti su Sander van Vugt RHCE): una porta può essere utilizzata da un solo servizio alla volta.

Per verificare che l’elenco sia aggiornato, digitare:

# semanage port -l | grep -w http_port_t
http_port_t                    tcp      8001, 80, 81, 443, 488, 8008, 8009, 8443, 9000

In alternativa, puoi controllare il nuovo stato della porta (qui 8001):

# sepolicy network -p 8001
8001: tcp unreserved_port_t 1024-32767
8001: udp unreserved_port_t 1024-32767
8001: tcp http_port_t 8001

Configurazione di servizio specifica aggiuntiva

Oltre alla modifica della politica di SELinux, potrebbe essere necessario modificare la configurazione del servizio.
Ad esempio, con il servizio httpd, è necessario aggiornare la direttiva Listen o, se si tratta di un host virtuale, la direttiva <VirtualHost> nel file /etc/httpd/conf/httpd.conf per tenere conto della nuova porta.

Fonte: Guida per utenti e amministratori SELinux di RHEL 7 e pagina man di sepolicy network.

RHEL7: Esegui semplici query SQL su un database

Nota: questo è un obiettivo d’esame RHCE 7.

Prerequisiti

Innanzitutto, è necessario installare un database MariaDB.
Quindi, devi creare un semplice schema.

Connessione iniziale

Ora, è necessario connettersi al database (qui chiamato test):

# mysql -u user -p test
Enter password: your password
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 18
Server version: 5.5.35-MariaDB MariaDB Server

Copyright (c) 2000, 2013, Oracle, Monty Program Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [test]>

Puoi verificare la presenza della tabella, precedentemente creata, chiamata address:

MariaDB [test]> desc addresses;
+---------+------------------+------+-----+---------+-------+
| Field   | Type             | Null | Key | Default | Extra |
+---------+------------------+------+-----+---------+-------+
| id      | int(10) unsigned | YES  |     | NULL    |       |
| name    | varchar(20)      | YES  |     | NULL    |       |
| address | varchar(40)      | YES  |     | NULL    |       |
+---------+------------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

Inserimento dati

È possibile inserire alcuni dati nella tabella denominata address:

MariaDB [test]> insert addresses values(1,"James","address1");
Query OK, 1 row affected (0.02 sec)

MariaDB [test]> insert addresses values(2,"Bill","address2");
Query OK, 1 row affected (0.02 sec)

Selezione dei dati

Ora puoi ottenere l’indirizzo di James:

MariaDB [test]> select address from addresses where name="James";
+----------+
| address  |
+----------+
| address1 |
+----------+
1 row in set (0.00 sec)

È inoltre possibile ottenere tutti i record ordinati per nome in ordine crescente (ASC è l’ordine predefinito e può essere omesso):

MariaDB [test]> select * from addresses order by name ASC;
+------+-------+----------+
| id   | name  | address  |
+------+-------+----------+
|    2 | Bill  | address2 |
|    1 | James | address1 |
+------+-------+----------+
2 rows in set (0.00 sec)

Aggiornamento dei dati

Puoi sostituire il nome “Bill” con “John”:

MariaDB [test]> update addresses set name="John" where name="Bill";
Query OK, 1 row affected (0.02 sec)
Rows matched: 1  Changed: 1  Warnings: 0

MariaDB [test]> select * from addresses order by name DESC;
+------+-------+----------+
| id   | name  | address  |
+------+-------+----------+
|    2 | John  | address2 |
|    1 | James | address1 |
+------+-------+----------+
2 rows in set (0.00 sec)

Nota: DESC specifica un ordine decrescente.

Rimozione dati

Puoi anche cancellare il record di James:

MariaDB [test]> delete from addresses where name="James";
Query OK, 1 row affected (0.02 sec)

MariaDB [test]> select * from addresses;
+------+------+----------+
| id   | name | address  |
+------+------+----------+
|    2 | John | address2 |
+------+------+----------+
1 row in set (0.00 sec)

Questo è un tutorial molto semplice. Sono disponibili molte altre operazioni per un database come MariaDB. Una documentazione completa può essere trovata sul sito Web MySQL.

RHEL7: Backup e restore di un database MariaDB

Nota: questo è un obiettivo d’esame RHCE 7.

Prerequisiti

Innanzitutto, è necessario installare un database MariaDB.

Quindi, è necessario creare un semplice schema, altrimenti non si avrà nulla per il backup.

Procedura di backup

Per eseguire il backup del database chiamato test, digitare:

# mysqldump --user=root --password="your password" --result-file=test.sql test

Nota 1: è possibile specificare uno o più database alla fine della riga.
Nota 2: l’opzione –single-transaction può anche essere utilizzata per eseguire il backup di uno o più database in un’unica transazione.

Ottieni il seguente contenuto nel file test.sql:

-- MySQL dump 10.14  Distrib 5.5.35-MariaDB, for Linux (x86_64)
--
-- Host: localhost    Database: test
-- ------------------------------------------------------
-- Server version	5.5.35-MariaDB

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 
*/;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Table structure for table `addresses`
--

DROP TABLE IF EXISTS `addresses`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `addresses` (
  `name` varchar(20) DEFAULT NULL,
  `address` varchar(40) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `addresses`
--

LOCK TABLES `addresses` WRITE;
/*!40000 ALTER TABLE `addresses` DISABLE KEYS */;
/*!40000 ALTER TABLE `addresses` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

-- Dump completed on 2014-07-16 12:42:41

Procedura di ripristino


Ora, per ripristinare lo stesso contenuto nel database, digitare:

# mysql --user=root --password="your password" test<test.sql


Nota 1: il contenuto del file SQL (qui chiamato test.sql) gestisce automaticamente le ri-creazioni della tabella.
Nota 2: se si ripristina il database in un server in cui non esiste già, sarà necessario crearlo prima (il file SQL non ricrea il database stesso): mysql> create database test;

Risorse addizionali

Anche se mysqldump è lo strumento da utilizzare durante l’esame perché è direttamente disponibile, non è l’unica soluzione per eseguire il backup del database MySQL/MariaDB. Puoi anche dare uno sguardo allo strumento mydumper (vedi dettagli aggiuntivi qui).
Oltre agli obiettivi dell’esame, ci sono diversi modi per migrare i database MySQL da un server all’altro.
Si può anche essere interessati a questo documento di riferimento di architettura sulla distribuzione di database MySQL su storage Red Hat Ceph.
Ulteriori precauzioni possono essere necessarie quando si caricano grandi database MySQL.
Il sito Web di Percona fornisce un interessante articolo su come ripristinare MySQL Logical Backup alla massima velocità.

Strumenti di Openstack

Esistono molti più strumenti (open source e non) disponibili, con altri progetti futuri in fase di incubazione. Questo elenco non dovrebbe essere visto come l’elenco completo di tutti gli strumenti definitivi, ma semplicemente una lista di alcuni degli strumenti più popolari utilizzati al momento della stesura di questo articolo. L’importante ora è che l’automazione e la libertà sono le parole chiave. Ci occuperemo più in profondità della selezione e della gestione degli strumenti per le operazioni native cloud nei prossimi articoli.

 

Compute:

Nova – Compute Service: https://wiki.openstack.org/wiki/Nova

Glance – Image Service: https://wiki.openstack.org/wiki/Glance

Ironic – Bare Metal Provisioning Service: https://wiki.openstack.org/wiki/Ironic

Magnum – Container Orchestration Engine Provisioning: https://wiki.openstack.org/wiki/Magnum

Storlets – Computable Object Store: https://wiki.openstack.org/wiki/Storlets

Zun – Containers Service: https://wiki.openstack.org/wiki/Zun

 

Storage, backup, and recovery:

Swift – Object Store: https://wiki.openstack.org/wiki/Swift

Cinder – Block Storage: https://wiki.openstack.org/wiki/Cinder

Manila – Shared Filesystems: https://wiki.openstack.org/wiki/Manila

Karbor – Application Data Projection as a Service: https://wiki.openstack.org/wiki/Karbor

Freezer Backup, Restore and Disaster Recovery: https://wiki.openstack.org/wiki/Freezer

 

Networking and content delivery:

Neutron – Networking: https://docs.openstack.org/neutron/latest/

Designate – DNS Service: https://wiki.openstack.org/wiki/Designate

DragonFlow – Neutron Plugin: https://wiki.openstack.org/wiki/Dragonflow

Kuryr – Container Plugin: https://wiki.openstack.org/wiki/Kuryr

Octavia – Load Balancer: https://wiki.openstack.org/wiki/Octavia

Tacker – NFV Orchestration: https://wiki.openstack.org/wiki/Tacker

Tricircle – Networking Automation for Multi-Region Deployments: https://wiki.openstack.org/wiki/Tricircle

 

Data and analytics:

Trove – Database as a Service: https://wiki.openstack.org/wiki/Trove

Sahara – Big Data Processing Framework Provisioning: https://wiki.openstack.org/wiki/Sahara

Searchlight – Indexing and Search: https://wiki.openstack.org/wiki/Searchlight

 

Security, identity, and compliance:

Keystone – Identity Service: https://wiki.openstack.org/wiki/Keystone

Barbican – Key Management: https://wiki.openstack.org/wiki/Barbican

Congress – Governance: https://wiki.openstack.org/wiki/Congress

Mistral – Workflow Service: https://wiki.openstack.org/wiki/Mistral

 

Management tools:

Horizon – Dashboard: https://wiki.openstack.org/wiki/Horizon

Openstack Client – Command-line Client: https://www.openstack.org/software/releases/ocata/components/openstack-client-(cli)

Rally – Benchmark Service: https://rally.readthedocs.io/en/latest/

Senlin – Clustering Service: https://wiki.openstack.org/wiki/Senlin

Vitrage – Root Cause Analysis Service: https://wiki.openstack.org/wiki/Vitrage

Watcher – Optimization Service: https://wiki.openstack.org/wiki/Watcher

 

Deployment tools:

Chef Openstack – Chef Cookbooks for OpenStack: https://wiki.openstack.org/wiki/Chef

Kolla – Container Deployment: https://wiki.openstack.org/wiki/Kolla

OpenStack Charms – Juju Charms for OpenStack: https://docs.openstack.org/charm-guide/latest/

OpenStack-Ansible – Ansible Playbooks for OpenStack: https://wiki.openstack.org/wiki/OpenStack

AnsiblePuppet OpenStack – Puppet Modules for OpenStack: https://docs.openstack.org/puppet-openstack-guide/latest/

Tripleo – Deployment Service: https://wiki.openstack.org/wiki/TripleO

 

Application services:

Heat – Orchestration: https://wiki.openstack.org/wiki/Heat

Zaqar – Messaging service: https://wiki.openstack.org/wiki/Zaqar

Murano – Application catalog: https://wiki.openstack.org/wiki/Murano

Solum – Software development life cycle automation: https://wiki.openstack.org/wiki/Solum

 

Monitoring and metering:

Ceilometer – Metering and data collection service: https://wiki.openstack.org/wiki/TelemetryCloud

kitty – Billing and chargebacks: https://wiki.openstack.org/wiki/CloudKitty

Monasca – Monitoring: https://wiki.openstack.org/wiki/Monasca

AODH – Alarming service: https://docs.openstack.org/aodh/latest/

Panko – Event, metadata indexing service: https://docs.openstack.org/panko/latest/