## 1 Introduction  
Cloud computing [1, 2, 3] provides a service environment in which IT resources can be virtualized and used. This computing environment has evolved with the advent of public cloud services [4] such as AWS [5] and Google Cloud [6] and the emergence of open-source platforms that provide private cloud service construction, such as OpenStack [7] and CloudStack [8]. In the case of a public cloud, the user pays a certain amount and receives a prepilit cloud service. A private cloud [9] is used by a company or user to directly build and use a cloud-service-provision environment. \"A Hybrid cloud\", which refers to the use of a public cloud and a private cloud together [10], is also provided.  
In the case of public cloud-computing services, companies or users receive services in the form provided by cloud vendors and pay according to service usage. A private cloud environment must be established to reduce the cost of cloud computing and build a cloud-service environment in the form desired by companies or users.  
In the case of private clouds, dependence on cloud vendors can be reduced; however, it is difficult to build a desired cloud-service-delivery environment without expert knowledge of the cloud. The most basic technical application for building and receiving cloud services is building a virtual machine. Enterprises or users who build private clouds have different purposes for using the cloud and have different requirements for different operating environments. Therefore, it is important to provide a customized virtual-machine environment suitable for various companies or users who wish to operate a private cloud [11, 12, 13, 14, 15].  
Recently, infrastructure as code (IaC) [16] has emerged as a concept for automating and providing virtual-machine provision and cloud-infrastructure construction. Tools such as Ansible [17] and Cloud-Init [18], which are used to automate virtual-machine construction as support tools that reflect the concept of IaC, are being researched and developed [19]. In this study, we propose a method for automating the creation and management of custom virtual machines by borrowing the concept of IaC. In addition, to ensure reusability and flexibility in building user virtual machines, we applied the concept of software product lines to build resource volumes used for virtual machines as core assets and presented an approach to utilize them. We proposed a bespoke virtual machine orchestrator (BVMO) to build a user-customized virtual machine by applying these concepts.  
The contributions of the BVMO proposed in this study are as follows: (1) providing a foundation to support user-customized virtual machine construction and management in a multi-private cloud environment by combining volumes provided from provisioning resource pools; (2) establishing a reuse virtuous cycle system that enables new reuse by re-registering virtual-machine resources created by users for the provisioning resource pool; and (3) solving technical difficulties in building virtual machines by applying BVMO without using command line interface (CLI) or application programming interface (API).  
The remainder of this paper is organized as follows. Section 2 introduces previous studies related to the creation and management of virtual machines. Section 3 describes the architecture, process and application of BVMO. Section 4 presents a case study and an evaluation of the process of creating a custom virtual machine using BVMO, and Section 5 concludes the paper.